在许多其他类之间共享的公共对象

时间:2012-02-03 22:33:07

标签: php oop

我目前正在将应用程序重构为多个类,以实现单一责任原则;然而,原始庞大的类中的许多方法使用一个共同的“元数据”对象(绑定为类属性)作为其业务逻辑。

例如:

if($this->metadata->applyTracking) {
 // perform tracking logic
}

当我将这些课程分开时,我正在考虑两种选择:

  1. 将此对象传递给类的特定方法,具体情况(可以是多次出现)。
  2. 将此对象添加为类属性(许多类将注入此属性)。
  3. 将对象设为Singleton(我对此方法持谨慎态度,因为它可能与全局变量共享相同的回退)
  4. 有关走哪条道路的建议?

3 个答案:

答案 0 :(得分:1)

方法#2似乎是最好的。我会注入一个对象存储库,其中存储库的每个成员都是提供不同服务的不同对象。可以在此处找到示例类:https://github.com/kenaniah/insight/blob/master/classes/registry.php

答案 1 :(得分:1)

如果您的代码中有继承,您可以考虑将其指定为基类中的成员,并将该实例公开为受保护变量。

Singleton真的更多的是关于这个类是否应该一次只在内存中有一个实例,或者你是否会多次实例化该类。

答案 2 :(得分:0)

如果不了解对象的使用方式,我很难肯定地说,但我可能建议有一个基类来定义所需的属性,然后在任何需要访问的后续类中继承该基类。那些属性。

然而,快速移动只是打败了我,哈哈。