1 回答

TA贡献1772条经验 获得超8个赞
我认为它new RequestHandler($container);
也来自 Relay,它使用容器作为中间件来解析请求,但不会以其他方式传递它,因为它将是一个服务定位器。
1. 关于在类中“使用”容器的快速说明。
与其尝试将容器传递给类,不如使用容器注入每个类及其依赖项,最好使用类型提示。
例如,如果您想在类中使用该记录器,则不应通过$container->get(myLogger::class)
. 相反,是这样的:
use myLogger;
class MyClass
public $logger;
public function __construct(myLogger $logger)
{
$this->logger = $logger;
}
然后您可以$this->logger
在方法中使用。
2.容器与路由器一起工作:
你要实现的应该是调度前的最后一个中间件。
它应该在其构造函数中包含容器。
它应该接收匹配的路由,并根据它的定义初始化匹配的类(或函数)。
在此初始化期间,它可以注入该类及其依赖项。
我建议你考虑两个很好的例子。首先是Harmony 库,您会看到它如何使用上述容器。其次,由于您使用的是 FastRoute 和 PHP-DI 的自定义版本,请查看PHP-DI 演示的索引文件。虽然它不是 psr-15 的用途,但它展示了如何使用 PHP-DI 调用 FastRoute 的匹配路由。
祝你好运。
- 1 回答
- 0 关注
- 168 浏览
添加回答
举报