1

下面我有一系列的课程。我试图找出将我的数据从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

起初我想在层次结构中传递数据,如下所示(我目前没有扩展任何有利于组合而不是继承的东西):

\CLI\Process.php

public function run() {
    $condition = new Condition($dataToShare);
}

\CLI\Process\Condition.php

public function __construct($dataToShare) {
    $this->data = $dataToShare;
}

\CLI\Process\Condition\Rule.php

public function __construct($dataToShare) {
    $this->data = $dataToShare;
}

相反,我决定使用注册表模式,因为我很偏执。我觉得共享数据从一个班级转移到另一个班级,而且很混乱。然后我发现自己在一个子类中设置了一些注册表值,这同样糟糕!

所以一位同事告诉我尝试一个抽象类,这样每个人都可以扩展它。我的问题是,如果我扩展一个抽象类,那么我的值将不会被设置(因为它是一个新的父实例)。

我最好的选择是Singleton吗?有没有人有任何建议来保持这个清洁?我希望它是干净的,并且我不希望这种偏执的想法会污染数据而不是不断地向下传递数据。

当我问这个问题时,感觉就像我在水下说中文一样。

4

1 回答 1

1

您可以尝试使用抽象类和静态属性与您的所有实例共享它

于 2013-11-04T17:37:20.150 回答