在PHP类之间共享对象

时间:2009-05-04 08:54:41

标签: php oop

在其他类之间共享对象的最佳方法是什么?

例如; “数据库”对象,具有“article”和“user”对象所需的函数。

我不想使用全局变量(包括单例)或在每个类中创建对象的新实例,例如

function __construct() {
    $this->database = new database;
    $this->cache = new cache;
}

将传递对象,例如

class test{
    function __construct( $obj ) {
        $this->obj = $obj;
    }
}
$database = new database;
$test = new test( $database );

要走的路?

5 个答案:

答案 0 :(得分:6)

是。将对象传递给构造函数 - 或者传递给setter - 是最好的方法。此模式称为dependency injection。它具有额外的好处,它使您的代码更容易测试(使用存根或模拟)。

答案 1 :(得分:1)

是的,这几乎就是你想做的事情。如果一个类有外部要求,不要在类中创建它们,但要求它们作为构造函数中的参数。

答案 2 :(得分:0)

如果他们只有一个实例,那么前进的方式就是单身人士。如果没有,唯一的方法是在初始化期间传递它们(例如:在构造函数中)。

答案 3 :(得分:0)

这将是向正确方向迈出的一步,但在我看来,你实际上想要一个单身,即使实际上没有在代码中受到限制。

答案 4 :(得分:0)

您之前也可以使用已在会话或缓存(APC,memcached)中加载的对象。 Personnaly我认为单身是去那里的最佳方式(特别是对于数据库类)