2011-09-05 37 views
11

Tôi có một số kiến ​​thức cơ bản về mô hình Model-View-Controller và tôi muốn tạo một trang web bằng cách sử dụng này. Nhưng tôi thấy nó hơi khó hiểu làm thế nào để thực sự thực hiện điều này. Tôi bị kẹt trong các chi tiết.Làm thế nào để MVC trong php mà không cần sử dụng một số khung

Giả sử tôi có một trang web nơi mỗi người dùng giữ một số danh sách việc cần làm. Làm thế nào bạn sẽ tiếp cận này? Bạn sẽ tạo những lớp học nào? Lớp nào sẽ xuất ra HTML, lớp nào sẽ làm máy chủ làm bộ điều khiển và nó sẽ giao tiếp với khung nhìn để tạo ra đầu ra như thế nào? vv ..

Xin lỗi nếu nó có vẻ ngớ ngẩn và tôi đoán nó phải được phần nào dễ dàng nhưng tôi bị mắc kẹt.

+2

http://tutorialzine.com/2011/08/jquery-mobile-product-website/ Không phải trang web danh sách việc cần làm, nhưng một trang sử dụng mẫu MVC. – Kheldar

+1

Viết nó như bạn thường làm, sau đó chuyển nó sang MVC sau đó. Làm điều này một vài lần và bạn sẽ sớm có thể bắt đầu với mô hình MVC từ đầu của dự án. – chelmertz

Trả lời

5

Bạn có thể thực hiện việc này mà không cần một khung công tác hiện có và chỉ cần tạo khung của riêng mình. Nó không phải là một nhiệm vụ rất khó.

Không phải là ứng dụng cụ thể, khung MVC của bạn sẽ phải làm như sau:

  1. Redirect tất cả các trang tải đến một trang trung tâm, do đó mọi yêu cầu được xử lý một cách chính xác.
  2. Trích xuất bộ điều khiển và tác vụ từ url yêu cầu. (ví dụ, một yêu cầu đến http://yoursite.com/Task/Add, bạn phải dịch sang phương thức Thêm trên TaskController)
  3. Nạp lớp bộ điều khiển (trong ví dụ của chúng ta là TaskController). Có lẽ sử dụng Autoload.
  4. Gọi phương thức Add trên Controller
  5. Hiện kết quả

Có nhiều cách để thực hiện quan điểm, bạn có thể bắt chước ASPMVC và có hành động của mỗi bộ điều khiển trả về một ActionResult, mà đã một phương pháp Execute. Sau đó, quá tải về điều đó, ViewResult sẽ đảm nhiệm tải chế độ xem chính xác và bao gồm chế độ xem phù hợp ModelData.

2

Mặc dù câu hỏi của bạn hơi quá rộng, tôi nghĩ rằng tôi có thể cung cấp một số trợ giúp.

Câu hỏi số một mà tôi có khi bắt đầu với các khung công tác là: Tôi nên sử dụng khung làm việc nào, nếu có,? Trong trường hợp của bạn, tôi sẽ không cố gắng để xây dựng một trang web MVC mà không có một khuôn khổ premade. Hầu hết các kiến ​​trúc bạn sẽ kết thúc bằng văn bản đã được thực hiện hàng chục lần hơn.

Những thứ như trừu tượng DB, hệ thống đăng nhập, v.v. rất nhàm chán để viết. Cũng có thể sử dụng một khuôn khổ đã có những thứ này.

Tôi rất muốn đề xuất cuốn sách này: http://www.amazon.com/Building-Applications-Symfony-CakePHP-Framework/dp/0470887346/ref=sr_1_2?ie=UTF8&qid=1315227178&sr=8-2. Nó sẽ hướng dẫn bạn xây dựng một trang web MVC đơn giản bằng cách sử dụng ba khung công tác MVC PHP khác nhau. Đến cuối cuốn sách, bạn sẽ có đủ kinh nghiệm với mỗi khung để bạn có thể chọn cái nào bạn thích nhất.

Hoặc, nếu bạn muốn viết khung của riêng mình để bạn có thể tìm hiểu cách hoàn thành, tôi muốn đề xuất câu trả lời của TJHeuvel. Một tùy chọn khác là đọc mã nguồn của một khung công tác hiện có để bạn có thể xem cách những người khác đã triển khai nó như thế nào.

0

Nhận xét của Kheldar có ý nghĩa hoàn hảo. Hướng dẫn này thực sự bao gồm việc tạo một khung công tác vi mô bằng cách sử dụng mẫu MVC.

Mặc dù bạn sẽ cần phải thêm vào đó - về thêm đường tùy chỉnh và một số loại động cơ định tuyến nhưng ngoài rằng nó là một đứa bé bước rất tốt vào việc phát triển khung MVC của riêng bạn ..

6

Dưới đây là câu trả lời chính xác cho câu hỏi của bạn từ chính RASMUS LERDORF. Read through.

+0

Dường như các ví dụ mã nhúng như http://talks.php.net/presentations/slides/mvc/example/model/db.phps không hoạt động. Hiện tại, nó hiển thị "Chào mừng bạn đến với Hệ thống bản trình bày PHP. Ở đây chúng tôi liệt kê tất cả các loại bản trình bày có sẵn được lưu trữ trong hệ thống này.". Có ai có một bản sao lưu đầy đủ của hướng dẫn của người sáng tạo PHP không? – baptx

+0

bài viết lỗi thời –

5

Đối với hồ sơ:

Nó không phải là khó để làm một MVC trong PHP, nó nhiều hơn liên quan đến xử lý kỷ luật chứ không phải là một khó khăn bài tập.

a) Model (s) (không bắt buộc, bạn có thể sử dụng một mảng trong PHP)

<?php 
    class MyModel() { 
    } 
?> 

b) Route (index.php?)

<?php 
include "..."; 
// here we collects all the information, such post,get and path values 
$action=...; 
$param=....; 
switch($controller) { 
     case "my": // www.myweb.com/my/action 
     include "controller\MyController.php"; // open the right controller. 
     break; 
} 
?> 

c) Điều khiển

<?php 
include "model\MyModel.php"; 
switch($action) { 
    case "add": 
     // here live the logic, information, call for services and such. 
     $model=....; 
     // and finally... 
     include "view\MyView.php"; 
     break; 
} 
?> 

d) Xem

<html> 
    <body> 
     <?=$model->field;?> 
    </body> 

<html> 

Lưu ý:

a) Chế độ xem phải rõ ràng nhất có thể. Hãy nghĩ rằng khung nhìn có thể được tạo ra bởi một nhà thiết kế web không quan tâm đến php.

b) Chế độ xem luôn là bước cuối cùng của quy trình. Trang web xem luôn trả về không có gì.

Các vấn đề liên quan