PHP MVC là gì?
MVC (Model – View – Controller) là một mô hình thiết kế phần mềm được xây dựng quanh mối liên hệ
của ba dạng bộ phận cấu thành chính, trong ngôn ngữ lập trình như PHP, thường với một tập trung mạnh
vào mô hình phần mềm lập trình hướng đối tượng (OOP). Ba dạng bộ phận cấu thành có thuật ngữ lỏng
models, views và controllers. Hãy nói về chúng riêng rẽ và sau đó xem chúng khớp với nhau như
thế nào.
Model là nơi tất cả business logic của một ứng dụng được giữ. Business logic có thể là bất cứ thứ
gì tùy theo một ứng dụng lưu giữ dữ liệu như thế nào, hay sử dụng dịch vụ bên thứ ba để hoàn thành
yêu cầu doanh nghiệp. Nếu ứng dụng truy cập thông tin trong một cơ sở dữ liệu, code để làm
cái đó sẽ được giữ trong model. Ví dụ, nếu nó được cần, để cung cấp dữ liệu kho hay tweet về một
sản phẩm mới, code đó cũng sẽ được giữ trong model.
View là nơi tất cả phần tử giao diện người dùng của ứng dụng của chúng ta được giữ. Cái này có
thể bao gồm HTML markup, CSS style sheets, và các files Javascript của chúng ta. Bất cứ thứ gì một
người dùng thấy hay tương tác với có thể được giữ trong một view, và đôi khi cái người dùng thấy
thực sự là một kết hợp của nhiều views khác nhau trong cùng một yêu cầu.
Controller là bộ phận cấu thành cái kết nối các models và views cùng với nhau. Controllers phân
lập business logic của một model khỏi các phần tử giao diện người dùng của một view, và xử lí ứng
dụng phản ứng với tương tác người dùng trong view như thế nào. Controllers là điểm đầu tiên
của lối vào bộ ba bộ phận cấu thành này, vì yêu cấu trước tiên được truyền tới một controller,
cái sau đó sẽ khởi tạo các models và views được yêu cầu để hoàn thành một yêu cầu tới ứng dụng.
Xem ảnh:
Chú ý: Không phải mọi yêu cầu tới ứng dụng sẽ yêu cầu một model hay một view. Phần tử nào được
load phụ thuộc vào dạng của yêu cầu và tài nguyên được yêu cầu để hoàn thành nó. URL được yêu
cầu định nghĩa cái này trong một quá trình được gọi là routing cái bạn sẽ học sau. Một controller
có thể phục vụ chỉ để chuyển đôi trạng thái của ứng dụng hay để trả về dữ liệu chưa được duyệt
trực tiếp từ một dịch vụ bên thứ ba. Trong những trường hợp như vậy, sẽ không cần cho models hay views.
Hãy nhìn vào một ứng dụng ví dụ cái minh họa việc sử dụng các classes này. Các mạng xã hội
thường đơn giản để sử dụng, nhưng có thể hoàn toàn phức tạp đằng sau. Nếu chúng ta sẽ xây dựng
một mạng xã hội đơn giản, chúng ta sẽ phải xem xét không chỉ các phần tử giao diện người dùng, mà
còn ở dữ liệu người dùng được lưu giữ như thế nào và giao diện người dùng phản ứng như thế nào với
đầu vào người dùng. Chúng ta sẽ cần xem xét các khía cạnh sau:
+ Mạng xã hội của chúng ta có khả năng duy trì dữ liệu người dùng bên trong một cơ sở dữ liệu. Nó
cũng cần truy cập ảnh người dùng từ một dịch vụ bên thứ ba, như Flickr. Code cho cả hai hoạt động này
nên được giữ trong models, khi các hoạt động này trực tiếp liên quan đến yêu cầu doanh nghiệp của
chúng ta.
+ Mạng xã hội của chúng ta nên dễ để sử dụng, và thu hút đối với người dùng. Vì chúng ta đang xây dựng
nó cho Web, chúng ta sẽ sử dụng các công nghệ website tiêu chuẩn như HTML cho markup, CSS style sheets
liên kết bên ngoài, và các files Javascript liên kết bên ngoài cho hành vi. Tất cả các phần tử này
nên có mặt trong views.
+ Models và views của ứng dụng của chúng ta phải được kết nối cùng với nhau mà không can thiệp lẫn
nhau. Ngoài ra, ứng dụng cần một cách thức để phản ứng lại tương tác người dùng trong các views và
duy trì dữ liệu phù hợp tới các models. Controllers được sử dụng cho mục đích này.