Ну, вам нужно настроить ваш веб-сервер (Apache или так) для выполнения для всех запросов (uri) того же PHP (также известного как front controller).
Затем в вашем переднем контроллере вам необходимо проанализировать uri (http://php.net/manual/es/reserved.variables.server.php) и сделать его совпадающим с одним из правил маршрутизации (например, с помощью регулярного выражения).
Взгляните на https://github.com/symfony/Routing (или прочитайте комментарий Чарли).
В случае index.php/контроллер/индекс/arg1/arg2 вы не нужно настроить веб-сервер (просто получить PATH_INFO):
<?php
class Controller {
public function indexAction($a, $b) {
return "$a & $b";
}
}
$path = trim($_SERVER['PATH_INFO'], '/');
$parts = explode('/', $path);
$controllerName = ucfirst($parts[0]);
$actionName = $parts[1] . 'Action';
$controller = new $controllerName();
echo $controller->$actionName($parts[2], $parts[3]);
Очевидно этот пример является toooooooo basic. Существует больше вещей, таких как определение маршрута, отражение метода, чтобы получить имена аргументов метода и многое другое, поэтому, пожалуйста, заходите в исходный код с некоторой хорошей структурой (например, Symfony2 !!!!).
в codeigniter, вы можете найти его в 'system/core/router.php' – egig
, хотите ли вы реализовать это самостоятельно? – coma