Мне нужен способ быстрой маршрутизации URL-адресов на вызов Class-> Method () с использованием синтаксиса конфигурации, не программирующего каждый случай.
У меня есть веб-инструмент, который берет URL-адрес и использует его для определениякласс объекта, на который ссылается URL, какой метод класса использовать и параметры этого метода.Я использую .htaccess для направления всех запросов в index.php, поэтому я читаю путь из $ _ SERVER ['PATH_INFO'] и оттуда фильтрую и разбираю его, чтобы получить отдельные компоненты.
Таким образом, www.example.com/user/view/12345 создаст пользовательский контроллер и вызовет функцию просмотра, которая будет отображать профиль пользователя.По сути, он будет делать следующее:
$url = explode("/",trim($_SERVER['PATH_INFO'],"/");
$class = $url[0] . "_Controller";
$page = new $class;
echo call_user_func_array(array($page, $url[1]), $url);
Теперь это, конечно, упрощение, есть много других движущихся частей, не показанных здесь, __autoload (), система шаблонов страниц и т. Д., НоВы поняли идею.URL-адрес имя_домена / класс / функция / [arg1] / [arg2] / [arg3] /..., и код быстро может определить, что необходимо для отрисовки страницы.
К сожалению, сайт должен соответствовать правилам API, продиктованным политикой.В соответствии с политикой, URL должен быть либо:
имя_домена / class / entityid / function_alias / [arg1] / [arg2] / [arg3] /... Для инструментов, которые влияют на определенныйсущность
имя_домена / класс / function_alias / [arg1] / [arg2] / [arg3] /... Для инструментов, не привязанных к отдельной сущности
У меня естьрешил это, но это грязно.Вместо вызова функции в $ url [1] для класса в $ url [0] и передачи ему оставшихся аргументов, я определяю класс объекта из $ url [0], создаю его экземпляр, а затем передаю URL-адрес объекта маршрут ($ url) метод.Оттуда у меня есть грязная комбинация переключателей и операторов if, которая переводит URL в правильный метод класса.
Мне нужен какой-то файл конфигурации или таблица маршрутизации, где я мог бы определить, как будет выглядеть URL,Я знаю, что есть CMS, которые делают подобные вещи.
"user/$1" => user/view/$1
"user/add" => user/add
"user/$1/edit" => user/edit/$1
"user/$1/key/$2" => user/edit_key/$1/$2
Мне нужен синтаксис и алгоритм, который быстро определит, каков реальный целевой класс и метод URL, создает его ипередайте ему обязательные значения url.