我相信這個概念被稱爲類名稱解析。您給出的示例用法看起來非常像依賴注入容器的定義。
使用DI容器,您可以以陣列格式列出您的定義,就像您提供的代碼一樣,然後當您需要定義的類時,所有注射都會自動解析。
例如,假設你有以下定義一個DI容器:
$containerDefinitions = [
Database\DatabaseAccessorInterface::class => Database\ConcreteDatabaseAccessor::class,
Data\QueryExecutionHandlerInterface::class => Data\ConcreteQueryExeuctionHandler::class
];
...然後你有一個像這樣定義的類ConcreteQueryExeuctionHandler
構造:
public function __construct(DatabaseAccessorInterface $databaseAccessor)
{
$this->databaseAccessor = $databaseAccessor;
}
...好吧,當您從DI容器中檢索定義QueryExecutionHandlerInterface
時,使用類似下面的內容:
$queryExecutionHandler = $container->get(Data\QueryExecutionHandlerInterface::class);
...然後它會在ConcreteQueryExecutionHandler
的施工期間自動注入ConcreteDatabaseAccessor
。
這是一個非常具體的例子,但我相信你提供的代碼是一個DI容器定義數組。
不,先生我不是問範圍解析運營商IM詢問使用class關鍵字與該範圍解析操作方式 –
我的不好,更新以更好地反映這個問題。 – neuromatter
你是我的英雄,非常感謝我搜索了很多,但無法找到結果,因爲我不知道這個概念 –