这篇文章与我的需求类似,但我对它的具体解决方案更感兴趣,如果这样做是好的或坏的想法。 Sharing objects between PHP classes
说,就像上面的链接一样,我有一个对象,我想传递给多个类,比如一个$ db对象。
不是使用依赖注入并将其传递给每个方法的构造函数,而是让所有类扩展 Base 类,将$ db对象存储为属性,这是一个好主意吗? / p>
例如:
abstract class Base {
protected static $_db;
public function setDatabase( Database $db ) {
$this->_db = $db;
}
public function getDatabase() {
return $this->_db;
}
}
class SomeClass extends Base {
public function doStuff() {
$result = $this->getDatabase()->query(.....);
}
}
这意味着扩展 Base 的所有类都不必担心自己抓取/检查/设置$ db,因为一旦定义了类,它们就已经将该对象作为属性
我知道依赖注入是常用的方法,但这是否可行?
谢谢!
答案 0 :(得分:0)
这很好。我之前使用过它,从未遇到任何问题。
答案 1 :(得分:0)
您仍然需要在类的每个实例上设置db - 在一个实例上设置它并不会在所有实例上设置它...除非它当然是static
属性。