Роутинг на PHP?

В веб-разработке роутинг - это процесс определения того, какой код должен быть выполнен при доступе к определённому URL-адресу веб-сайта. В PHP для реализации роутинга можно использовать различные подходы в зависимости от сложности проекта и требований к нему.

Одним из самых простых способов реализации роутинга на PHP является использование "чистого" PHP без использования дополнительных библиотек. Для этого можно создать файл .htaccess для перенаправления всех запросов на единую точку входа, например, index.php, где и будет происходить обработка запросов. В самом файле index.php уже можно анализировать адресную строку ($_SERVER['REQUEST_URI']) и в зависимости от запрошенного URL выполнять нужный код.

Более продвинутые и удобные способы реализации роутинга в PHP включают использование сторонних библиотек, таких как Symfony Routing Component, Laravel Routing и других. Эти библиотеки предоставляют возможность определения маршрутов с помощью удобных синтаксических конструкций и автоматической маршрутизации запросов.

Пример реализации простого роутинга на "чистом" PHP:

<?php

$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

if ('/' === $uri) {
    require __DIR__ . '/home.php';
} elseif ('/about' === $uri) {
    require __DIR__ . '/about.php';
} else {
    http_response_code(404);
    echo '404 Not Found';
}

Пример реализации роутинга с использованием Symfony Routing Component:

<?php

require 'vendor/autoload.php';

use SymfonyComponentRoutingRoute;
use SymfonyComponentRoutingRouteCollection;
use SymfonyComponentRoutingRequestContext;
use SymfonyComponentRoutingMatcherUrlMatcher;

$routes = new RouteCollection();
$routes->add('home', new Route('/', ['controller' => 'HomeController', 'method' => 'index']));
$routes->add('about', new Route('/about', ['controller' => 'AboutController', 'method' => 'index']));

$context = new RequestContext($_SERVER['REQUEST_URI']);

$matcher = new UrlMatcher($routes, $context);
$parameters = $matcher->match($_SERVER['REQUEST_URI']);

// Выполнение контроллера и метода в соответствии с маршрутом
$controller = new $parameters['controller']();
$method = $parameters['method'];
$controller->$method();

Как видно из примеров, роутинг в PHP может быть реализован различными способами, от простого определения логики в index.php до использования специализированных библиотек для удобного определения маршрутов и контроллеров. Важно выбрать подход, который наилучшим образом подходит для ваших задач и уровня сложности проекта.