2009-12-01 66 views
3

我想使用我创建的数据库单身人士,在几个类的方法。在每个方法中单独实例化单例还是通过__constructor()实例化单例并在每个方法中从变量访问它更合适?在PHP中使用单身人士

谢谢。

+0

如果它是一个单身那么它不应该是能够每次创建新实例。 – scotchi 2009-12-01 22:40:28

回答

0

单身是否可能在每次实例化课程时使用?或者它只是偶尔用于不总是被调用的方法?如果是前者,在构造函数中执行它可能更直接;如果是后者,那么效率只会建议在每种方法中按需实例化(这是假定初始单例创建的开销很大 - 如果不是,只需在构造函数中执行并省去一些麻烦)。

3

考虑到它是一个单例,结果将是相同的:只有一个DB对象实例,并且它将始终是相同的。

因此,两种解决方案都可以工作,并产生相同的结果;至少,如果每次创建类的实例时都使用DB类 - 当然,性能差异可能可以忽略不计。


不过,随着越来越构造函数中的单一实例和其他方法使用一个类变量的解决方案将会有一个优点:你的方法不会依靠这个单,但只在一个类变量.. 。

...这意味着Dependency Injection将是更容易(你只需要修改你的__construct方法,而不是每一个类的方法)如果你想使用它第一天 - 例如,以“模拟”您的数据库类,以进行自动化测试。

欲了解更多信息,你可以在这个博客帖子看看:What is Dependency Injection?

+0

谢谢你这么详细的回答:) – bennn 2009-12-01 22:40:34

+0

不客气:-)玩得开心! – 2009-12-01 23:08:10