Переписывание URL в PHP вместо конфигурации сервера - PullRequest
0 голосов
/ 26 августа 2011

Я ищу очень легкую инфраструктуру маршрутизации (чтобы пойти с php-skel ).

Первое, что я хотел бы исследовать, это указать правила перезаписи в файле php (обработчик «not found») аналогично тому, как это указано в конфигурациях сервера.

Вот потенциальный пример (но я хочу знать, какие фреймворки предоставляют что-то такое легкое):

Файл 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');
});

Что такое облегченные структуры / функции маршрутизации или методы?

Ответы [ 3 ]

2 голосов
/ 26 августа 2011

Путь php:

http://example.com/index.php/controller/action/variables

$routing = explode("/" ,$_SERVER['PATH_INFO']);
$controller = $routing[1];
$action = $routing[2];
$variables = $routing[3];
0 голосов
/ 26 августа 2011

PHP не может перезаписывать URL-адреса так, как это может mod_rewrite, он может перенаправлять только на другие страницы, что в основном удваивает число обращений на ваш сервер (1 попадание в скрипт php, второе попадание в цель перенаправления).

Однако 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 вы можете довольно хорошо продублировать "симпатичный" URL mod_write.

0 голосов
/ 26 августа 2011

PHP имеет функцию parse url , которую можно легко использовать для маршрутизации. Затем вы можете вызвать explode () для части пути, которая возвращается, чтобы получить массив компонентов url.

...