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 關注
- 194 瀏覽
添加回答
舉報
