2010-01-21 51 views
0

最近我问了一些关于单例和注册表模式的使用问题,但这里有一个新问题。可以在组成注册表的对象中调用Registry Pattern对象吗?

假设我在PHP中有3个主要的类对象,我需要访问20个其他类文件并在站点范围内访问。

  • 数据库对象
  • Cache对象
  • 核心对象

然后我可以使用注册表模式对这些对象的所有3存入1个注册表对象,我们将称之为“注册表对象“

注册表类将有一个单例方法,因此我们可以确保我们只调用一次注册表对象。

到目前为止,一切都很好,这里是我需要你的建议的地方。所有20个其他类现在都可以访问上面提到的3个主要对象。但是在上面的那3个对象里面,可以让它们包含注册表对象吗?因为它们也需要互相访问,或者我应该在这三个数据库中的每一个中引用数据库,缓存和核心对象的单例方法?这可能是一个愚蠢的问题,我可能只是有点困惑,因为来自注册表对象的单例可能会使组织注册表中的对象包含reistry成为可能。

回答

0

为什么不让这三个类变为静态?我使用的是一种扩展PHP的PDO类的静态数据库类,并让我用这样的:

$sql = "SELECT * FROM table"; 
foreach(DB::query($sql) as $row) { 
    // do something 
} 

我真的很喜欢用静态类/功能特别适用于这个“全球”之类的东西,这种方式。也许这对你来说也是一种选择?

+0

这是一个选项,但我已经将要使用注册表模式来存储和访问其他对象和变量,所以我想我可能只是用我认为的访问我的数据库对象。 – JasonDavis 2010-01-21 09:32:51

+0

但是注册表模式描述了afaik静态注册表类,以便每个类都可以使用它。所以没有“注册表对象”,只是每个类可以使用注册表的静态内容。我引用这个:http://www.phpbar.de/w/Registry – Thomas 2010-01-21 09:37:57

相关问题