2010-06-10 16 views
5

Vì vậy, tôi nghĩ rằng tôi hiểu hệ thống tập tin xếp tầng theo các thuật ngữ cơ bản, nhưng tôi dường như không thể quấn đầu quanh 'cấu trúc H'ierachy của MVC. Bất cứ ai có thể cho tôi biết những lợi thế của việc sử dụng HMVC trên MVC và đó là chức năng cơ bản dự định?Cấu trúc HMVC của Kohana 3.0 theo các thuật ngữ của giáo dân?

Cảm ơn bạn đã dành thời gian!

Trả lời

5

HMVC phù hợp hơn với Tiện ích con. Ví dụ, một widget Calendar có thể có bộ điều khiển, mô hình và bộ khung nhìn riêng của nó, và bạn có thể chỉ cần gọi bộ điều khiển của nó để hiển thị một khung nhìn nhất định từ bên trong trang chính để nhúng tiện ích.

Sự nhấn mạnh là trên các yếu tố GUI có thể tái sử dụng. Xem tại đây để đọc thêm: http://www.javaworld.com/javaworld/jw-07-2000/jw-0721-hmvc.html.

Chỉnh sửa: Đây là liên kết trung tâm PHP thực tế: http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/. Dường như có hình minh họa đẹp hơn.

+0

Sau đó, bạn có thể tranh luận chỉ sử dụng khung MVC cho một trang web có quy mô lớn hơn không? –

+1

Mọi người nói rằng HMVC có khả năng mở rộng hơn, nhưng nó phụ thuộc vào trang web của bạn. Chỉ vì một trang web có quy mô lớn không có nghĩa là trang web có tiện ích con hoặc ngược lại. –

5

Bạn có thể yêu cầu nội bộ trang (bộ điều khiển và hành động được tìm thấy bởi các tuyến đường). Bạn có thể làm điều này cho ví dụ:

class Controller_Menu extends Controller 
{ 
    public function action_index() 
    { 
     $this->request->response = view stuff ... 
     $this->request->response->set('...', ...) // some vars 
    } 
} 

class Controller_Home extends Controller 
{ 
    public function action_index() 
    { 
     $this->request->response = ...; // some view stuff... 
     $this->request->response->set('menu', 
      Request::factory('menu')->execute()->response // here happens the magic 
     ); 
    } 
} 

Mỗi trang người haves một menu không cần phải làm tất cả các logic để load menu vv (ví dụ từ các mô hình). Bạn chỉ cần thực hiện một yêu cầu đến bộ điều khiển, thực thi nó và nhận kết quả. Rất hữu ích khi sử dụng đúng cách.

+0

Tôi nghĩ rằng tôi đã nhận nó ngay bây giờ :) Điều đó thực sự rất tiện dụng. Cảm ơn –

3

Những người trên diễn đàn KO3 đã mô tả khả năng HMVC như tạo Yêu cầu AJAX mà không cần thêm Yêu cầu HTTP.

Trường hợp thực tế có thể nếu bạn muốn xây dựng một hệ thống có API như một phần không thể thiếu của ứng dụng. Twitter chẳng hạn. Với HMVC, bạn có thể viết API trước, và sau đó sử dụng nó trong ứng dụng. Điều này tiết kiệm hoặc trùng lặp mã hoặc yêu cầu HTTP bổ sung.

Hiện tại, hoạt động theo cách này khá hạn chế, chủ yếu là do loại yêu cầu có thể được gửi. Here is a forum post that I made a little while ago with regards to this. It may clarify how HMVC could be useful.

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