Автор оригинала: David Wong.
Эта статья, впервые опубликованная в рамках MVC о том, как работают маршрутизаторы ( маршрутизаторы), воспроизводится, пожалуйста, укажите источник.
Объясните: Похоже, что перевод SF классифицируется как ОШИБКА, поэтому в этой статье дается оригинальная категория.
Маршрутизатор или диспетчер MVC обнаруживает URL-адрес HTTP-запросов и пытается сопоставить один компонент URL-адреса с методом, определенным в контроллере и контроллере, передавая все параметры в метод.
Ниже приведен простой класс маршрутизаторов, который может примерно объяснить, как работают маршрутизаторы. Однако в реальном проекте маршрутизатор намного сложнее, чем маршрутизатор в следующем примере, потому что ему приходится иметь дело с большим количеством вещей.
Класс SimpleRouter – это упрощенная модель маршрутизатора MVC. Его основная функция заключается в добавлении каждого пользовательского маршрута в массив и его выполнении. Чтобы понять, как это работает, скопируйте следующий код в index.php В документе.
routes[$route] = $closure;
}
// Perform specific routing
function execute()
{
$path = $_SERVER['PATH_INFO'];
/**
* Detecting whether a given routing is defined,
* Or perform the default'/'home page routing.
*/
if (array_key_exists($path, $this->route)) {
$this->route[$path]();
} else {
$this->route['/]();
}
}
}
/* Create Router instances*/
$router = new SimpleRouter();
/* Add Home Closure Value Router*/
$router->add_route('/', function(){
echo 'Hello World';
});
/* Adding another closure route*/
$router->add_route('/greetings', function(){
echo 'Greetings, my fellow men.';
});
/* Add callback functions as routing*/
$router->add_route('/callback', 'myFunction');
/* Callback function handler*/
function myFunction(){
echo "This is a callback function named '" . __FUNCTION__ ."'";
}
/* Perform routing*/
$router->execute();Теперь перейдите в браузер, чтобы получить доступ к следующим URL-адресам:
http://localhost/index.php/ http://localhost/index.php/greetings http://localhost/index.php/callback
Для каждого URL-адреса вы должны видеть разные сообщения, определенные в нашей маршрутизации. Итак, как работает маршрутизатор?
В нашем примере add_route Метод добавляет путь к URL-адресу в массив маршрутизации и определяет соответствующие операции обработки. Эта операция обработки может быть простой функцией или функцией обратного вызова, которая передается в качестве закрытия. Теперь, когда мы выполняем выполнение маршрутизатора При использовании метода он определяет текущие $маршруты Соответствует ли маршрутизация в массиве, и если да, то выполняется функция или функция обратного вызова.
Если вы используете var_dump это $маршруты Массив, вы можете просмотреть подробную информацию об массиве. Для каждого определенного маршрута сохраняется закрытие и связывается с ним.
array (size=3)
'/' =>
object(Closure)[2]
'/greetings' =>
object(Closure)[3]
'/callback' => string 'myFunction' (length=10)
Процесс выполнения выполняется в следующих строках. & Доллар; это – > маршруты [$путь]** инструкция возвращает закрытие, сохраненное в **$маршруты В массиве, чтобы указать выполнение маршрута, обратите внимание на конец инструкции () 。
$this->routes[$path](); // or $this->routes['/']();
Приведенный выше пример просто демонстрирует, как работают маршрутизаторы. Для простоты мы не обрабатывали никаких ошибок и не учитывали безопасность маршрутизации.
Как работают маршрутизаторы MVC
Оригинал: “https://developpaper.com/how-routers-in-mvc-framework-run/”