Skip to content

1. Використання архітектури MVC у веб-додатках/PHP

PDF цього документа доступний |TYT|.

Код документа доступний за посиланням |TYT|.

Модель MVC (Модель-Вигляд-Контролер) спрямована на чітке розділення рівнів представлення, обробки та доступу до даних. Веб-додаток, що відповідає цій моделі, матиме таку архітектуру:

Таку архітектуру часто називають трирівневою або трикомпонентною:

  • інтерфейс користувача — це представлення (V)
  • логіка додатка — це контролер (C)
  • джерела даних — це модель (M)

Інтерфейс користувача часто є веб-браузером, але це може бути також автономний додаток, який через мережу надсилає запити HTTP до веб-сервісу та оформлює результати, які той йому надсилає. Логіка додатка складається зі скриптів, що обробляють запити користувача. Джерелом даних часто є база даних, але це можуть бути також прості текстові файли, каталог LDAP, віддалений веб-сервіс тощо. Розробнику вигідно зберігати значну незалежність між цими трьома компонентами, щоб у разі зміни одного з них інші два не потребували змін або потребували їх у мінімальному обсязі.

Архітектура MVC добре підходить для веб-додатків, написаних на об’єктно-орієнтованих мовах. Мова PHP (4.x) не є об’єктно-орієнтованою. Проте можна докласти зусиль для структурування коду та архітектури додатка, щоб наблизитися до моделі MVC:

  • Бізнес-логіку додатка розмістимо в модулях, відокремлених від модулів, що відповідають за управління діалогом «запит-відповідь». Архітектура MVC виглядатиме наступним чином:

У блоці [Logique Applicative] можна виділити:

  • головну програму або контролер, який є вхідними воротами додатка;
  • блок [Actions] — набір скриптів, що відповідають за виконання дій, запитуваних користувачем;
  • блок [Classes métier], що об’єднує модулі PHP, необхідні для реалізації логіки додатка. Вони не залежать від клієнта. Наприклад, функція, що дозволяє обчислити податок на основі певної інформації, наданої їй у параметрах, не повинна турбуватися про те, яким чином ці дані були отримані.
  • блок [Classes d'accès aux données], що об’єднує модулі PHP, які отримують дані, необхідні контролеру, часто це постійні дані (BD, файли тощо)
  • генератори представлень, що надсилаються клієнту у відповідь.

У найпростіших випадках логіка додатка часто зводиться до двох модулів:

  • модуль [contrôle], що забезпечує взаємодію «клієнт-сервер»: обробку запиту, формування різних відповідей
  • модуль [métier], який отримує від модуля [contrôle] дані для обробки та надає йому у відповідь результати. Цей модуль [métier] самостійно керує доступом до постійних даних.