如何以延迟加载方式在联赛/路线中使用通配符路线

时间:2019-06-25 23:03:04

标签: php

我正在使用联赛/路线4.2。 我正在尝试使用通配符实现延迟加载控制器。

class Router
{
    private $container;
    private $router;

    function __construct()
    {
        $this->container = new Container();
        $this->router = new \League\Route\Router();
        $this->mapRouters();
        $this->dispatch();
    }

    private function mapRouters() {
        $this->router->map('GET', '/', [MainController::class, 'index']);
        //$this->router->map('GET', 'Main', 'Nanitelink\Module\Main\MainController::index');
        $this->router->map('GET', '{module}', 'Nanitelink\Module\{module}\{module}Controller::index');
    }

    private function dispatch() {
        $request = $this->container->get('Zend\Diactoros\ServerRequest');
        $response = $this->router->dispatch($request);
        $emitter = $this->container->get('Zend\HttpHandlerRunner\Emitter\SapiEmitter');
        $emitter->emit($response);
    }
}

现在我知道注释的路线有效。 我尝试将其替换为通配符,但可能无法正确获取语法,但是会引发以下异常。

  

找不到类'Nanitelink \ Module \ {module} \ {module} Controller'

在联盟/路由中使用通配符路由的正确方法是什么? 文档没有说明如何以延迟加载方式使用通配符。

1 个答案:

答案 0 :(得分:0)

这是在github上与包管理器的讨论。

https://github.com/thephpleague/route/issues/247

因此,为了使答案简短,该软件包不会并且不允许使用与通配符匹配的变量替换要调用的可调用对象的名称。

如果有人需要信息,我确实建议在github中更改源代码。