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;
}

代わりに、私は偏執狂なので、レジストリ パターンを使用することにしました。共有データがクラスからクラスへと移動し、ごちゃごちゃしているように感じます。その後、サブクラス内でいくつかのレジストリ値を設定していることに気付きましたが、それも同様にひどいものでした!

それで、同僚が私に、Abstract クラスを試して、これらの各人がそれを拡張できるようにするように言いました。私の問題は、抽象クラスを拡張すると、値が設定されないことです(新しい親インスタンスであるため)。

私の最良の選択肢はSingletonですか? これをよりきれいに保つための提案はありますか?私はこれをきれいにしたいと思っており、データを継続的に下のレベルに渡すことでデータを汚染するという偏執的な考えを持ちたくありません。

この質問をしている間、水中で中国語を話しているような気がします。

4

1 に答える 1