有三种主要的依赖注入方式:构造函数注入、方法注入和属性注入。下面是一个简单的 PHP 依赖注入模式的示例,使用了构造函数注入:
// 服务接口
interface Logger {
public function log($message);
}
// 具体的服务类
class FileLogger implements Logger {
private $filename;
public function __construct($filename) {
$this->filename = $filename;
}
public function log($message) {
file_put_contents($this->filename, $message . PHP_EOL, FILE_APPEND);
}
}
// 主要业务类,依赖于Logger接口
class Service {
private $logger;
// 构造函数注入
public function __construct(Logger $logger) {
$this->logger = $logger;
}
public function doSomething() {
// 业务逻辑...
$this->logger->log('Doing something important');
}
}
// 客户端代码
$logger = new FileLogger('log.txt'); // 创建具体的服务类实例
$service = new Service($logger); // 构造函数注入
$service->doSomething();
在上述例子中,Logger 是一个服务接口,FileLogger 是具体的服务类实现。Service 类是主要的业务类,它通过构造函数注入一个实现了 Logger 接口的对象。
通过依赖注入,Service 类不需要关心具体的日志实现,而是依赖于一个实现了 Logger 接口的对象。这样的设计模式有助于提高代码的可维护性和可测试性,因为我们可以轻松地替换或者模拟依赖对象进行测试。
转载请注明出处:http://www.zyzy.cn/article/detail/11945/PHP