我创建了一个基于Fast-rout的路由器和基于PHP-DI 的容器。
这是我的路由器代码的片段:
$container = require __DIR__ . '/../config/Container.php';
$logger = $container->get(myLogger::class);
$routes = simpleDispatcher(function (RouteCollector $r) {
$routes = include('config/Routes.php');
foreach ($routes as $key => $route) {
$r->addRoute($route[0], $route[1], $route[2] );
}
});
$logger->warning('123');
$middlewareQueue[] = new FastRoute($routes);
$middlewareQueue[] = new RequestHandler($container);
$requestHandler = new Relay($middlewareQueue);
$requestHandler->handle(ServerRequestFactory::fromGlobals());
您可以看到我从 Container 实例调用 Logger。但是,我不知道如何将容器传递到通过路由器初始化的类中。
例如,如果我/3在浏览器中请求“ ”,则 TestMe 类正在运行 ( route ['GET', '/3', TestMe::class])。我能够呈现页面或从中发出响应。但是我不能从中使用 $container 虽然看起来我将它添加到中间件中: $middlewareQueue[] = new RequestHandler($container);
料青山看我应如是