在PHP对象依赖注入容器中,可以使用instanceof
关键字来实现类型自动装配。当容器解析一个类的依赖时,如果发现某个参数的类型是接口或父类,容器会自动实例化该类型的具体实现类。
例如,假设有以下接口和实现类:
interface LoggerInterface {
public function log($message);
}
class FileLogger implements LoggerInterface {
public function log($message) {
// Log message to file
}
}
然后在容器中注册接口和实现类:
$container->add(LoggerInterface::class, FileLogger::class);
当需要注入LoggerInterface
类型的依赖时,可以直接在构造函数或方法参数中声明类型为LoggerInterface
,容器会自动实例化FileLogger
类并注入:
class SomeClass {
private $logger;
public function __construct(LoggerInterface $logger) {
$this->logger = $logger;
}
public function doSomething() {
$this->logger->log('Doing something');
}
}
$someClass = $container->get(SomeClass::class);
$someClass->doSomething();
在上面的例子中,容器会自动实例化FileLogger
类并注入到SomeClass
类的构造函数中,无需手动new一个FileLogger
对象。这样可以方便地对类的依赖进行解耦和管理。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。