Как обработать соответствие маршрута в Symfony или другом маршрутизаторе? - PullRequest
1 голос
/ 04 мая 2019

Я использую компонент маршрутизатора Symfony. Маршрутизатор сообщает вам, совпадает ли определенный маршрут с входящим запросом, и возвращает вам массив с информацией этого маршрута (в моем случае я определил контроллер и метод). Я хочу знать, какой метод является лучшим для выполнения этого метода. Прямо сейчас я делаю что-то вроде этого:

<?php  
    require 'vendor/autoload.php';

    use Symfony\Component\Routing\Matcher\UrlMatcher;
    use Symfony\Component\Routing\RequestContext;
    use Symfony\Component\Routing\Route;
    use Symfony\Component\Routing\RouteCollection;
    use Symfony\Component\Routing\Exception\ResourceNotFoundException;
    use Symfony\Component\HttpFoundation\Request;

    $routes = new RouteCollection();

    $routes->add('test', new Route(
            '/test/{id}', 
            ['_controller' => 'app\controllers\testController::test'],
            ['id' => '[0-9]+'], 
            [], 
            '', 
            [],
            ['GET']
        )
    );

    $context = new RequestContext();
    $context->fromRequest(Request::createFromGlobals());

    $matcher = new UrlMatcher($routes, $context);

    try {
        $parameters = $matcher->match($context->getPathInfo());
        call_user_func_array($parameters['_controller'], array_slice($parameters, 1, -1));
    } catch (ResourceNotFoundException $e) {
        echo $e->getMessage();
    }
?>

Это работает, но я не знаю, правильно ли это сделать.

...