Разделящ код и образец, MVC - Част II


Какво е MVC? В превод от английски това означава „Model-View-Controller“. На първо място, за по-голяма яснота ще дам илюстрация на концепцията MVC и илюстрация на файловата йерархия при използване на тази технология:

Йерархия на MVC Concept File при използване на MVC

За опростяване, в следващото, файловете ще бъдат извикани както следва:

  • index.php - Контролер;
  • model.php - Модел;
  • shablon.html - Преглед.

Всички шаблони (дизайни) на нашата страница се съхраняват в папката/tpl. В папката/img - всички използвани изображения.

В общия и най-простия случай тази архитектура се състои от три файла, всеки от които отговаря за конкретна буква в абревиатурата на MVC. Основният файл е файлът, намиращ се в корена - index.php. Този файл ще се стартира автоматично, ако потребителят влезе в основната директория. Файлът index.php е контролерът, отговорен за обработката на потребителски действия, като щракване върху бутони върху формуляри, извикване на различни функции и свързване на шаблон. Обикновено този файл е малък и съдържа само извиквания на функции. Всички потребителски функции се поставят във файла model.php. Този файл е колекция от тези функции - библиотека. Там не се съдържа нищо освен тях.

За да използвате функциите от model.php, в началото на кода на файла index.php се вмъква ред, който включва тази библиотека:

След това всички написани от вас функции ще станат достъпни за скрипта. Съгласете се, много по-удобно е да съхранявате всички функции в отделен файл, който просто е свързан с основната програма в точното време. Редактирането на такава програма става много лесно. Например, с разширяването на функционалността на вашия сайт, просто добавяте нова функция в края на файла model.php и от този момент тя ще бъде достъпна в основната програма.

Файлът index.php обработва параметрите, предадени от заявките POST и GET, данните, въведени във формулярите от потребителя, и в зависимост от условията стартира различни функции от модела, които от своя страна генерират данни за изгледа. Заслужава да се отбележи, че нито index.php, нито model.php не показват един ред код, т.е. ехо и печат не се намират в тези файлове. Защо така? Това е и принципът на разделяне на кода и дизайна. В крайна сметка, ако, да речем, Моделът има функция, която ще покаже някакъв текст и някой ден дизайнерът трябва да го „проектира“, като добави, например,

до този текст, той ще трябва да проклина програмиста да търси къде се намира този ред във php файловете.

Така се оказва, че контролерът, в зависимост от различни обстоятелства (параметри, натискане на различни бутони на страниците, състояние на потребителя и т.н.), извиква различни функции, необходими за дадените обстоятелства, от библиотеката с функции - Модулът, който генерира данни за Изглед. И View, който по същество е прост html документ с php променливи, вмъкнати на правилните места, след като получи всички данни от Модела, формира външния вид на страницата, в крайна сметка получена от потребителя.

Каква е същността на това разделение? Първо, дизайнерът на оформление сам пише всички шаблони, без да мисли как и какво прилага програмистът. Те просто трябва да се споразумеят за всички променливи и масиви, които дизайнерът на оформление ще трябва да вмъкне в html-кода на страницата. Тук свършва по-дълбокото в джунглата на php-кодирането за дизайнера на оформление;) На второ място, всички функции са поставени в отделен файл, което прави винаги лесно и удобно да ги редактирате/добавяте/премахвате. Трето, логиката за цялото приложение е във файла index.php (Controller). Логиката, често наричана „Бизнес логика“, е „сърцето“ на сценария. Тя е тази, която решава какво точно трябва да прави вашият код. Много е удобно, когато логиката не е затрупана с дизайнерски елементи и функции. Е, четвъртото предимство на тази технология е способността на контролера, в зависимост от някои обстоятелства, да зарежда друг шаблон, като същевременно променя дизайна на страницата.

Нека ги наречем както следва: