Причина, яку я запитую, це тому, що сценарій PHP не є маршрутом? Наприклад, якщо у вас є article.php, ваш маршрут просто http://mysite.com/article.php .
Навіщо далі абстрагувати поняття маршруту, коли воно вже існує як простий файл?
Причина, яку я запитую, це тому, що сценарій PHP не є маршрутом? Наприклад, якщо у вас є article.php, ваш маршрут просто http://mysite.com/article.php .
Навіщо далі абстрагувати поняття маршруту, коли воно вже існує як простий файл?
Відповіді:
Щоб зрозуміти, що робить роутер, спершу потрібно зрозуміти, що таке перезаписувач. Зі статті Вікіпедії (моє наголос):
Двигун перезапису - це програмне забезпечення, яке змінює зовнішній вигляд веб-URL-адреси (переписування URL-адреси). Перезаписані URL-адреси (іноді відомі як короткі, вигадливі URL-адреси або зручні для пошукової системи - SEF) використовуються для надання коротших та релевантніших посилань на веб-сторінки. Методика додає ступінь поділу між файлами, які використовуються для створення веб-сторінки, та URL-адресою, яка представлена Світу .
Коли використовується механізм перезапису, у вас немає співвідношення 1: 1 між URL-адресою та сценарієм PHP. Приклад з тієї ж статті:
http://example.com/wiki/index.php?title=Page_title
можна переписати як:
Існують різні переваги використання техніки. Оскільки PHP зазвичай щільно поєднується з Apache, найбільш часто використовуваним механізмом перезапису є Mod_rewrite Apache .
Якщо ви хочете перезаписати URL-адреси, вам потрібна якась маршрутизація, оскільки маршрутизація - це процес отримання URL-адреси, розбиття її на компоненти та вирішення питання про те, який саме сценарій потрібно викликати. Сторінка документації для стандартного маршрутизатора Zend Framework пояснює процес як:
Маршрутизація - це процес прийняття кінцевої точки URI (тієї частини URI, яка надходить після базової URL-адреси) та її розкладання на параметри, щоб визначити, який модуль, контролер та дії цього контролера повинні отримувати запит.
Більшість фреймворків PHP сьогодні базуються на шаблоні MVC , і в рамках MVC процес йде приблизно так * :
index.php
сценарій,index.php
отримує URL та запускає процес маршрутизації.Зіставлення параметрів контролерам та методам зазвичай використовує відповідність за допомогою регулярних виразів, щоб мати можливість обробляти складні та динамічні схеми маршрутизації, відомі як маршрути. Хороші приклади маршрутів можна знайти на сторінці документації про маршрутизацію URI CodeIgniter :
$ route ['journals'] = "блоги";
$ route ['blog / joe'] = "блоги / користувачі / 34";
$ route ['product / (: any)'] = "каталог / product_lookup";
$ route ['product / (: num)'] = "каталог / product_lookup_by_id / $ 1";
$route
Масив містить шаблони в якості ключів і результуючі дії в якості значень в controller/action_method/dynamic_parameter
форматі.
* Це не задум як опис канонічного процесу, а лише спрощене пояснення.