依赖注入(Dependency Injection, DI)是一种设计模式,用于实现控制反转(Inversion of Control, IoC)。它允许将对象的依赖关系从对象内部转移到外部,从而使得代码更加灵活、可测试和可维护。
class Database {
private $connection;
public function __construct(PDO $connection) {
$this->connection = $connection;
}
public function query($sql) {
return $this->connection->query($sql);
}
}
$db = new Database(new PDO('mysql:host=localhost;dbname=test', 'user', 'password'));
class Logger {
public function log($message, $handler) {
$handler->write($message);
}
}
class FileHandler {
public function write($message) {
file_put_contents('log.txt', $message . PHP_EOL, FILE_APPEND);
}
}
$logger = new Logger();
$handler = new FileHandler();
$logger->log('Hello, World!', $handler);
class EmailSender {
public $transport;
public function send($message) {
$this->transport->send($message);
}
}
class SmtpTransport {
public function send($message) {
// SMTP发送逻辑
}
}
$sender = new EmailSender();
$sender->transport = new SmtpTransport();
$sender->send('Hello, World!');
原因:过度使用依赖注入可能会导致代码结构变得复杂,难以理解和维护。
解决方法:
原因:依赖注入容器在初始化时需要解析所有依赖关系,可能导致启动时间过长。
解决方法:
通过以上方式,可以有效地管理和使用依赖注入,提升代码的可维护性和可测试性。
领取专属 10元无门槛券
手把手带您无忧上云