在PHP类之间共享对象

5

如何在其他类之间共享对象是最好的方式?

例如,一个“数据库”对象具有“文章”和“用户”对象所需的函数。

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

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个回答

8

是的。将对象传递给构造函数或setter是最好的方法。这种模式被称为依赖注入(dependency injection)。它的附加优点是使您的代码更易于测试(使用存根或模拟)。


1

是的,那基本上是你想要做的方式。如果一个类有外部要求,请勿在类内创建它们,而是在构造函数中作为参数要求它们。


0

如果它们只有一个实例,那么最好的方法是使用单例模式。如果不是,则唯一的方法是在初始化期间传递它们(例如:在构造函数中)。


0

这将是朝着正确方向迈出的一步,但在我看来,您实际上确实希望在那里使用单例,即使没有在代码中进行限制。


0

你也可以使用已经在会话或缓存(APC,memcached)中加载的对象。个人认为单例模式是最好的选择(特别是对于数据库类)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接