Wednesday, August 12, 2015

Hướng dẫn lập trình Mô hình MVC trong Yii php

Yii sử dụng mô hình MVC (Model-View-Controller: Vốn được sử dụng trong việc xây dựng các ứng dụng Client-Server nói chung) trong việc thiết kế kiến trúc cơ bản. MVC hướng tới việc phân chia các logic đặc thù trong việc giao tiếp với người dùng. Đại khái nó giúp bạn xử lý các phần khác nhau trong từng logic mà không làm ảnh hưởng tới phần khác. Mình khuyên các bạn nên tìm hiểu kỹ về MVC trước khi bắt tay vào lập trình trên Yii (mặc dù việc bắt tay vào làm luôn cũng không đến nỗi khó khăn cho lắm).

Trong mô hình MVC, model đại diện cho thông tin và các luật đối với thông tin đó! Ở đây bạn nào học ràng buộc trong môn thiết kế CSDL sẽ hiểu rõ hơn. View chứa các đối tượng tương tác trực tiếp với người dùng như là các nút, các textbox,... Controller sẽ giúp 2 thằng trước tương tác với nhau, nó đảm nhận việc xử lý dữ liệu, thu thập dữ liệu từ View hoặc đưa dữ liệu từ Model ra View...

Bên cạnh việc tận dụng mô hình MVC, Yii cũng giới thiệu đối tượng front-controller, gọi là Application. Application thu thập dữ liệu từ request của người dùng và đưa tới controller phù hợp để xử lý.


 

Cấu trúc của một ứng dụng Yii​



1. Workflow căn bản
Đồ thị bên dưới sẽ chỉ cho các bạn thấy một luồng xử lý căn bản của Yii khi nhận yêu cầu từ phía người dùng (Yêu cầu ở đây có thể là từ URL, từ Form,...)


 ​


Diễn giải từng bước như sau:
1. Người dùng sẽ gửi yêu cầu dưới dạng 1 URL dạng như http://abc.com/index.php?r=post/show&id=1 và trong đó abc.com là tên miền của bạn có thể sử dụng localhost và WebServer sẽ tiếp nhận yêu cầu đó bằng cách thực thi "bootstrap script" index.php!
2. Bootstrap script sẽ khởi tạo một instant Application và chạy nó.
3. Application có được thông tin yêu cầu của người dùng từ một một đối tượng bên trong application tên là request!
4. Application xác định controller và action mà yêu cầu gọi tới nhờ một thằng khác gọi là urlManager. Ví dụ ở đây controller nó gọi tới là post, action là id

(Hu hu hu, dịch tới đoạn này thì thật sự là mình không muốn dịch tiếp tí nào, đọc tiếng Anh còn dễ hiểu hơn ấy. Một phần mình không phải chuyên gia dịch tiếng Anh CNTT, 1 phần hồi trước học ngu mấy môn lập trình kinh khủng nên không nhớ các thầy gọi mấy từ chuyên môn trên là gì, thế nên bạn nào muốn tìm hiểu kỹ mấy phần Khái niệm cơ bản của Yii thì vào trang chủ của nó đọc sẽ rõ ràng hơn nhá. Tuy nhiên mình không phải google translate đâu nhá, công sức bỏ ra cả đấy)

5. Application tạo một instant controller tương ứng để tiếp tục xử lý yêu cầu của người dùng. Controller nhận biết được yêu cầu show tham chiếu tới phương thức tên là actionShow() trong controller class. Rồi nó thực thi bộ lọc của chính nó (PostController) liên quan tới yêu cầu trên (Cái này bạn bắt tay vào làm rồi từ từ sẽ hiểu). Nếu thỏa mãn hết các yêu cầu của bộ lọc thì action show sẽ được thực thi.
6. action load một model nào đó (ví dụ Post) với id =1 từ cơ sở dữ liệu
7. action sẽ render ra 1 view tên nào đó (ví dụ show)
8. view sẽ đọc và show ra các thuộc tính (attributes) của Post model
9. view lúc này có thể thực thi thêm 1 số widget (nếu được khai báo trong nó)
10. view hiển thị ra kết quả được nhúng giữa một layout!
11. action hoàn thành việc render ra view và hiển thị trên trình duyệt của người dùng!

3 comments:

  1. Cám ơn bạn đã đầu tư cho blog này, mình mới tìm hiểu về Yii2 và thấy các bài viết rất hữu ích

    ReplyDelete
  2. Cám ơn bạn đã đầu tư cho blog này, mình mới tìm hiểu về Yii2 và thấy các bài viết rất hữu ích

    ReplyDelete