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;
}
我不明白,比如我用的是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;
}