Я ищу очень легкую структуру маршрутизации (чтобы пойти с php-skel ).
Первое, что я хотел бы исследовать, – это указать правила перезаписи в php-файле (обработчик «не найден») аналогично тому, как это указано в конфигурациях сервера.
Вот потенциальный пример (но я хочу знать, какие рамки предоставляют что-то такое легкое):
Файл route.php:
route('application/api', '/api/index.php'); route('application', '/application/index.php');
Файл appplication / index.php:
route(':module/:action', function($module, $action) { include(__DIR__ . '/' . $module . '/' . $action . '.php'); });
Каковы облегченные рамки / функции или методы маршрутизации?
Способ php:
http://example.com/index.php/controller/action/variables
$routing = explode("/" ,$_SERVER['PATH_INFO']); $controller = $routing[1]; $action = $routing[2]; $variables = $routing[3];
PHP имеет функцию urse parse, которую можно легко использовать для маршрутизации. Затем вы можете вызвать explode () в части пути, которая возвращается для получения массива компонентов url.
PHP не может переписывать URL-адреса способом mod_rewrite, он может перенаправлять только на другие страницы, что в два раза больше количества обращений на вашем сервере (1 ударил по скрипту php, 2-го попадания на цель перенаправления).
Тем не менее, вы можете заставить скрипт PHP динамически загружать содержимое «перенаправленных» страниц:
switch($_GET['page']) { case 1: include('page1.php'); break; case 2: include('page2.php'); break; default: include('page1.php'); }
вswitch($_GET['page']) { case 1: include('page1.php'); break; case 2: include('page2.php'); break; default: include('page1.php'); }
вswitch($_GET['page']) { case 1: include('page1.php'); break; case 2: include('page2.php'); break; default: include('page1.php'); }
вswitch($_GET['page']) { case 1: include('page1.php'); break; case 2: include('page2.php'); break; default: include('page1.php'); }
это будет довольно прозрачным для пользователя, и вы получите в основном тот же эффект, что и mod_rewrite. С соответствующими параметрами query и path_info вы можете довольно хорошо продублировать mod_write «pretty» url.