使用基类在多个类之间共享对象

时间:2011-04-24 07:35:33

标签: php dependency-injection abstract-class

这篇文章与我的需求类似,但我对它的具体解决方案更感兴趣,如果这样做是好的或坏的想法。 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,因为一旦定义了类,它们就已经将该对象作为属性

我知道依赖注入是常用的方法,但这是否可行?

谢谢!

2 个答案:

答案 0 :(得分:0)

这很好。我之前使用过它,从未遇到任何问题。

答案 1 :(得分:0)

您仍然需要在类的每个实例上设置db - 在一个实例上设置它并不会在所有实例上设置它...除非它当然是static属性。