次のクラス構造があるとします。
class Foo {
protected static $_things = ['thing'];
}
class Bar extends Foo {
protected static $_things = [
'thing', 'other-thing'
];
}
class Baz extends Bar {
protected static $_things = [
'thing', 'other-thing', 'something-else'
];
}
class Quux extends Baz {
// Note the lack of "other-thing"
protected static $_things = [
'thing', 'something-else', 'one-more'
];
}
これをリファクタリングし、配列要素をよりドライに保つための最良の方法は何でしょうか?たとえば、「thing」要素は1回だけ(in Foo
)定義する必要があり、「other-thing」要素は1回だけ(in Bar
)定義する必要があります。
実際には、この配列は非常に大きく、最大4または5レベルの継承が存在する場合があり、要素の追加または削除に関係なく、それぞれが特別な方法でこの配列を「変更」する必要があります。
私は適切な変更を行う初期化メソッドのアイデアをいじっていましたが、最初にもっと良い方法があるかどうかを確認したいと思いました。