下面我有一系列课程。我试图找出将 Process.php 中的数据传递到以下每个类的最佳方法。
/CLI/
/Process/
/Condition
Rule.php
Condition.php
Single.php
Process.php
Response.php
Registry.php <-- I don't want to use this, It feels sloppy
起初我想在层次结构中传递数据,如下所示(我现在没有扩展任何有利于Composition而不是继承的内容):
\ CLI \ Process.php
public function run() {
$condition = new Condition($dataToShare);
}
\ CLI \过程\ Condition.php
public function __construct($dataToShare) {
$this->data = $dataToShare;
}
\ CLI \过程\条件\ Rule.php
public function __construct($dataToShare) {
$this->data = $dataToShare;
}
相反我决定使用注册表模式因为我是偏执狂。我觉得共享数据从一个类到另一个类都很混乱。然后我发现自己在一个子类中设置了一些注册表值,它也一样糟糕!
所以一位同事告诉我尝试一个抽象类,所以每个人都可以扩展它。我的问题是,如果我扩展一个抽象类,那么我的值将不会被设置(因为它是一个新的父实例)。
我最好选择 Singleton 吗?有没有人有任何建议让这个更干净?我希望这个很干净,而且我不想让这种偏执的想法污染数据而不断地将其传递到水平。
我问这个问题时感觉就像是在水下说中文。
答案 0 :(得分:1)
您可以尝试使用抽象类和静态属性与所有实例共享它