以下に一連のクラスがあります。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ですか? これをよりきれいに保つための提案はありますか?私はこれをきれいにしたいと思っており、データを継続的に下のレベルに渡すことでデータを汚染するという偏執的な考えを持ちたくありません。
この質問をしている間、水中で中国語を話しているような気がします。