我已经建立了一个基于 SlimPHP 团队的Slim Skeleton应用程序的新应用程序。在我的路由定义中,我希望能够访问Slim4 文档中描述的路由解析器。因此,例如,我希望能够编辑骨架的app/routes.php文件,如下所示:
$app->get('/', function (Request $request, Response $response) {
$routeParser = $app->getRouteCollector()->getRouteParser(); // this doesn't work
$response->getBody()->write('Hello world! ' . $routeParser->urlFor('something'));
return $response;
});
$app->getRouteCollector()->getRouteParser()
不起作用是有道理的,因为$app
这里没有定义。但我认为我们会改为调用$this->getRouteCollector()->getRouteParser();
,但这会产生错误:"Call to undefined method DI\\Container::getRouteCollector()"
。
看来我的困惑肯定是关于依赖注入,这对我来说是新的,对我来说不是自然而然的。老实说,我很想在其他地方(在 index.php 中?)定义 $routeParser 变量,这样我就可以在任何路由定义中访问它,而不必每次都调用 $app->getRouteCollector()->getRouteParser()。但目前我愿意接受任何有效的方法。