Уявіть, що ви будуєте веб-додаток. Як тільки він розростається, ваш код стає безладним і важким для підтримки. У більшості випадків у вас буде HTML змішаний з PHP (це погано, не робіть так більше), або ж запити до бази даних розкидані в різних місцях, що робить структуру проекту незрозумілою, а код — важким для читання! І ось тут на допомогу приходить MVC. Але спочатку —
Що таке MVC?
MVC — це шаблон проектування, який розділяє код вашого додатку на три основні компоненти:
- M — це Модель (Model). Тут знаходиться ваша бізнес-логіка! Модель відповідає за всі взаємодії з вашою базою даних.
- V — це Подання (View) (не Vendetta, ха...). Подання — це ваші HTML/Frontend шаблони, які бачить і з якими взаємодіє користувач.
- C — це Контролер (Controller), як і передбачає назва, він керує процесами і виступає посередником між поданням (view) і моделлю (model). Контролер обробляє введення користувача, взаємодіє з Моделлю (Model) і оновлює Подання (View).
Це розділення робить ваш код чистішим, легшим для підтримки і, що найважливіше, масштабованим!
Але MVC не буде повним без системи маршрутизації! Тому —
Що таке маршрутизація (Routing)?
Маршрутизація — це процес відображення URL-адрес до конкретних контролерів і методів у вашому додатку.
Маршрутизація забезпечує, що коли користувач переходить за певною URL-адресою, викликається відповідний контролер і метод для обробки запиту.
— — — —
Створимо простий додаток: комбінуючи те, що ми тільки що дізналися!
- Точка входу в ваш додаток:
Кожен PHP-додаток починається з точки входу, у нашому випадку — це index.php. Цей файл ініціалізує додаток, запускає сесію (помітили, що тепер не потрібно стартувати сесію в кожному php файлі-поданні? Класно, правда?) і обробляє маршрутизацію.
Що відбувається:
Ми визначаємо маршрути, використовуючи $route->get() і $route->post().
Кожен маршрут відображає URL-адресу на контролер і метод.
Метод resolve() співвідносить поточну URL-адресу з відповідним маршрутом і викликає відповідний метод контролера.
Маршрутизатор: Route.php
Думайте про маршрутизатор як про серце вашого додатку, він перенаправляє вхідні запити до правильного контролера і методу!
Наш маршрутизатор зберігає маршрути в масиві, співвідносить URL запиту і метод з відповідним маршрутом. Якщо маршрути не знайдено, він повертає сторінку 404.
Контролер (Controller):
Контролери обробляють запити користувачів і взаємодіють з поданнями.
Метод index (також відомий як дія (action)) звертається до моделі (Model), щоб отримати дані з нашої таблиці, а потім передає їх в подання (View).
Модель (Model):
Просто виконує запит до бази даних для отримання даних.
Подання (View):
Звичайний HTML з необхідним PHP для динамічного контенту (помітили, як ми не ініціалізували сесію або PHP теги вище HTML?)
Тепер з'єднаємо все це разом. Коли користувач відвідує “/”, маршрутизатор викликає метод index() контролера HomeController, який повертає отримані дані з моделі (Model), а потім завантажує home.php подання і відображає наше повідомлення в браузері.
Аааааа, і voilà!
Якщо цей пост був корисний, будь ласка, поділіться ним з іншими розробниками!
Перекладено з: Simple MVC & Routing example with PHP native