bartfeenstra/dependency-retriever

此包已被弃用且不再维护。没有建议的替代包。

0.4.3 2016-03-25 08:26 UTC

This package is auto-updated.

Last update: 2024-01-29 02:51:16 UTC


README

Build Status

此包是一个工具,用于简化依赖注入和类实例化。其API允许通过工厂自动发现和注入类的依赖。

检索器可以帮助你注入依赖,即使你无法或不想从调用代码中注入,也可以根据类作者的建议来检索它们。

use Psr\Log\LoggerInterface;

class Bar {

  /**
   * @suggestedDependency drupalContainerService:logger.channel.form $formLogger
   */
  public function __construct(LoggerInterface $formLogger, $severity) {
    // ...
  }

}

当在具有Drupal服务容器的系统中使用时,对于$formLogger参数,logger.channel.form服务是建议的依赖。drupalContainerService检索器可以检索此依赖并将其提供给工厂,以便在类实例化期间注入。

$factory = new SimpleFactory(new AnnotatedFinder(), new DrupalContainerServiceRetriever());
$bar = $factory->instantiate(Bar::class, [
  'severity' => LogLevel::WARNING,
]);

在这个例子中,使用覆盖的依赖(值)$severity实例化了Bar,但AnnotatedFinder和假设的DrupalContainerServiceRetriever根据Bar@suggestedDependency注解为工厂提供$formLogger的依赖。