PHP DI和铸造接口

PHP DI and casting interface

我不明白,比如我用的是php-di容器, 我有 ClassA 和 ClassB,它们都是 implements Intreface1 我正在通过 DI

创建这两个 classes 的对象

现在,当我将 ClassA 注入构造函数时,我需要准确地注入这个 class,它创建了这个 classA 的依赖项,而不是 Intreface1

我能以某种方式说这个特定的 ClassA 应该实现 intrefeca1 吗? 在 PHP-DI 的文档中我发现

  // mapping an interface to an implementation
    'LoggerInterface' => DI\create('MyLogger'),

但我不明白它是如何工作的,LoggerIntreace 它只是一个将此文本映射到对象的字符串

可以注入"by interface"

独白和 php-di 的例子,你说:

use Monolog\Logger;

use Psr\Log\LoggerInterface;
...
  LoggerInterface::class => \DI\autowire(Logger::class)

现在在你的构造函数中,你可以注入

public function __construct(
        \Psr\Log\LoggerInterface $logger
    ) {

        $this->logger = $logger;
    }