Trang 1 / 2 12 LastLast
Hiển thị kết quả từ 1 đến 10 / 17
  1. #1
    Tham gia
    03-08-2009
    Bài viết
    102
    Like
    20
    Thanked 9 Times in 8 Posts

    [Help] Xây dựng web theo mô hình MVC and OOP

    Chả là em đang dựng một project nho nhỏ theo hướng đối tượng phác theo cách hoạt động của Codeigniter Framework. Mô hình của em đại loại thế này .



    + Trong đó:
    - Thư mục controllers , models, views chứa các controller, model và view tương ứng,
    các controller và model này thừa kế từ controller cha trong mục libs bên dưới.
    - Libs chứa các file điều hướng controller bootstrap.php class dựng sẵn như session, cache, controler cha, model và view cha.
    + Cách hoạt động : file .htaccess rewrite lại url để dữ liệu đổ về file index, index autoload các file trong libs và khởi tạo lớp bootstrap().

    Ví đụ khí ta đánh vào http://localhost/vmc/login thì bootstrap sẽ gọi controller login->model->view tương ứng. Đại loại là vậy, em giải thích hơi củ chuối nhưng các pro cũng chẳng lạ gì kiểu này.

    Có điều e thắc mắc là. Hoạt động như cách trên thì ta chỉ xử lý được các phần động như login, search, register.... mỗi lần trình duyệt thay đổi thì nó mới gọi đên controller tương ứng
    Còn các mục như menu, sidebar thì ở controller nào nó đều hiển thì. Vậy theo các pro có kinh nghiệm rùi thì xử lý các mục tĩnh này thế nào để nó chạy ổn mà vẫn theo mvc and oop ạ.

    Rất mong được chỉ giáo. Thanks all.
    Quote Quote

  2. #2
    Tham gia
    24-06-2012
    Location
    Hồ Chí Minh
    Bài viết
    139
    Like
    29
    Thanked 35 Times in 24 Posts
    cái đó gọi là block (trong magento/php-nuke) hoặc là module (trong joomla).
    Mỗi block được viết theo Model-View
    Chỗ nào cần hiển thị thì bác chỉ cần include file / gọi 1 hàm / chạy 1 command chỗ đó

    Bạn có thể đọc kỹ hơn trong tài liệu mô tả kỹ thuật của Magento hoặc Joomla, cả wordpress widget cũng có tác dụng tương tự.
    Đừng dừng lại ở việc sử dụng tốt một framework.
    Hãy cố gắng viết ra một framework.
    Có thể framework của bạn không tốt bằng những cái hiện có, nhưng trình của bạn sẽ gần hơn với những pro tạo ra framework tốt nhất.
    Yahoo antipro_vn: PHP, Python, CSS, JS, HTML.

  3. Thành viên Like bài viết này:


  4. #3
    Tham gia
    19-01-2011
    Bài viết
    254
    Like
    9
    Thanked 10 Times in 10 Posts
    Quote Được gửi bởi antipro.vn View Post
    cái đó gọi là block (trong magento/php-nuke) hoặc là module (trong joomla).
    Mỗi block được viết theo Model-View
    Chỗ nào cần hiển thị thì bác chỉ cần include file / gọi 1 hàm / chạy 1 command chỗ đó

    Bạn có thể đọc kỹ hơn trong tài liệu mô tả kỹ thuật của Magento hoặc Joomla, cả wordpress widget cũng có tác dụng tương tự.
    Ác, đang hỏi về Codeigniter bác ơi.

    @chủ topic, bạn có thể dùng 2 cách:
    1. Áp dụng mô hình HMVC ( HMVC là MVC của những MVC)
    2. Cần hiện chỗ nào thì $this->load->view('abc'); chỗ ấy.
    PHP Freelancer: PHP, Jquery, CSS, CodeIgniter, ...

  5. Thành viên Like bài viết này:


  6. #4
    Tham gia
    03-08-2009
    Bài viết
    102
    Like
    20
    Thanked 9 Times in 8 Posts
    Đầu tiên cho e cảm ơn hai bác ạ. sau đó hai cho e hỏi thêm tí a.

    Quote Được gửi bởi antipro.vn View Post
    cái đó gọi là block (trong magento/php-nuke) hoặc là module (trong joomla).
    Mỗi block được viết theo Model-View
    Chỗ nào cần hiển thị thì bác chỉ cần include file / gọi 1 hàm / chạy 1 command chỗ đó

    Bạn có thể đọc kỹ hơn trong tài liệu mô tả kỹ thuật của Magento hoặc Joomla, cả wordpress widget cũng có tác dụng tương tự.

    Theo pro thì em bỏ qua controller của các mục này mà chỉ cần làm model rồi bên view include rội gọi lớp tương ứng ạ.

    Quote Được gửi bởi php_code View Post
    Ác, đang hỏi về Codeigniter bác ơi.

    @chủ topic, bạn có thể dùng 2 cách:
    1. Áp dụng mô hình HMVC ( HMVC là MVC của những MVC)
    2. Cần hiện chỗ nào thì $this->load->view('abc'); chỗ ấy.
    + Theo bác thì :

    1. Nếu áp dụng theo HMVC thì ta đí xây dựng các module con, và trong các mô dul ccon này có controller, model và vew riêng biệt ạ ? Nếu vậy thì controller và model cha trong libs có sử dụng nữa không ạ ?

    2. Nếu gọi đén view tương ứng thì cái này sẽ gọi ở contrller nà hả bác. Vì controller các mục này sẽ không được gọi trực tiếp qua bootstrap được ạ ?

  7. #5
    Tham gia
    24-06-2012
    Location
    Hồ Chí Minh
    Bài viết
    139
    Like
    29
    Thanked 35 Times in 24 Posts
    Cái này thực ra mà nói thì, tùy, nhiều.
    Gần như mỗi framework đều tìm cách giải quyết vấn đề này một cách "hợp lý" nhất có thể.
    Đừng dừng lại ở việc sử dụng tốt một framework.
    Hãy cố gắng viết ra một framework.
    Có thể framework của bạn không tốt bằng những cái hiện có, nhưng trình của bạn sẽ gần hơn với những pro tạo ra framework tốt nhất.
    Yahoo antipro_vn: PHP, Python, CSS, JS, HTML.

  8. Thành viên Like bài viết này:


  9. #6
    Tham gia
    03-11-2012
    Bài viết
    23
    Like
    4
    Thanked 5 Times in 5 Posts
    Nếu bạn đang phát triễn 1 dự án open source thì tốt nhất là tuân theo chuẩn OOP quốc tế là MVC.
    Còn ngược lại bạn hãy sáng tạo 1 mô hình MVC mà bạn có thể kiểm soát tốt nhât.

    Thật ra Model->View->Control là định nghĩa khái niệm mà thôi, thật ra mỗi lập trình viên khi bước đầu lập trình đều đã viết code theo MVC rồi.

    - Nhận yêu cầu từ người dùng thông qua GET, POST.
    - Kiểm tra, truy vấn và lấy dữ liệu từ Database
    - Trả về cho người dùng cái họ đã yêu cầu.

    Hehehe, chỉ có điều là thay vì tách ra thì chúng ta gồm chung vô 1 hàm hoặc 1 tập tin mà thôi.

  10. Thành viên Like bài viết này:


  11. #7
    Tham gia
    12-06-2012
    Bài viết
    72
    Like
    0
    Thanked 9 Times in 8 Posts
    Quote Được gửi bởi yeuyeulam View Post
    Đầu tiên cho e cảm ơn hai bác ạ. sau đó hai cho e hỏi thêm tí a.




    Theo pro thì em bỏ qua controller của các mục này mà chỉ cần làm model rồi bên view include rội gọi lớp tương ứng ạ.



    + Theo bác thì :

    1. Nếu áp dụng theo HMVC thì ta đí xây dựng các module con, và trong các mô dul ccon này có controller, model và vew riêng biệt ạ ? Nếu vậy thì controller và model cha trong libs có sử dụng nữa không ạ ?

    2. Nếu gọi đén view tương ứng thì cái này sẽ gọi ở contrller nà hả bác. Vì controller các mục này sẽ không được gọi trực tiếp qua bootstrap được ạ ?
    Chỉ trả lời phần 2, gọi $this->load->view(); trong file view (k phải trong controller).
    Thiết kế Web trả góp 12 thág-ThietKeWebsite99 .Com

  12. 2 thành viên Like bài viết này:


  13. #8
    Tham gia
    09-02-2007
    Bài viết
    280
    Like
    2
    Thanked 28 Times in 23 Posts
    Sidebar, Menu được xử lý Top Controller (Một số framework gọi là Front Controller). Ở View chỉ cần load biến đã xử lý ở Front Controller để hiển thị thôi chứ ko cần thao tác gì nữa cả. Front Controller là nơi xử lý những bước cơ bản nhất trước khi đẩy tới các Controller con, ví dụ: Check IP, Setup Visitor...

  14. Thành viên Like bài viết này:


  15. #9
    Tham gia
    03-08-2009
    Bài viết
    102
    Like
    20
    Thanked 9 Times in 8 Posts
    Thank all. View thì e hiểu rùi nhưng chủ yếu e muốn biết các xây dựng controller và model của các phần tĩnh, cách gọi nó sao cho phù hợp ấy ạ. Đặt nó ở đâu để khi load các phần động khác thì phần tĩnh cũng chạy theo ấy ạ ?

  16. #10
    Tham gia
    07-11-2012
    Bài viết
    20
    Like
    0
    Thanked 8 Times in 6 Posts
    Thường thì các framework muốn giải quyết các phần tĩnh thì mình nghĩ có 3 cách.
    1. Không cho load database vào controller
    2. Sử dụng cache module
    3. sử dụng cache query, nhưng về bản chất thì cache query vẫn phải connect database để có thể cập nhật dữ liệu theo thời gian quy định mà code bạn viết
    Được sửa bởi tieudaochanhmuoi lúc 21:13 ngày 07-11-2012

  17. 2 thành viên Like bài viết này:


Trang 1 / 2 12 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •