我认为“当构造函数,方法或DI容器注入对象时,重构类如何”
构造函数注入的简单示例。
<?php
class Person {
private $db;
function constructor($db) {
$this->db = $db;
}
}
这真是太好了,但是,让我们想象一下Person类在其他类如Report,Photos,Searcher等中的使用。因此,即使它们不需要db连接,每个类也需要通过构造或方法注入$ db。 / p>
下一课人员需要缓存对象。
<?php
class Person {
private $db;
function constructor($db, $cache) {
$this->db = $db;
$this->cache = $cache;
}
}
现在我们需要更新报告,照片,搜索者。如果项目很大,那就不容易了。
所以认为可能更好的解决方案是注入整个Dependence Injection Container(服务地点)
<?php
class Person {
private $db;
function constructor($di) {
$this->db = $di->get('db');
$this->cache = $di->get('cache');
}
}
似乎用重构解决了我的问题的一部分。但这个解决方案几乎就像全局变量。这是反模式的例子。
请通过此了解良好做法。