Есть такой тестовый код:
class a {
protected $data = array();
public function set($key, $value) {
if (!array_key_exists($key, $this->data)) {
$this->data[$key] = $value;
}
}
}
class b extends a {}
class c extends a {}
$b1 = new b();
$b2 = new b();
$b3 = new b();
$c1 = new c();
$c2 = new c();
$b1->set('x', 'b1x');
$b2->set('x', 'b2x');
$b3->set('x', 'b3x');
$c1->set('y', 'c1y');
$c2->set('y', 'c2y');
Пример сильно упрощен, на деле потомки тащат кучу зависимостей (всякие «статичные» данные) которые одинаковые потомки же и используют одинаково. Было бы хорошо эти данные сложить в общее место, попутно проверяя, если такой же потомок (в примере проверяется тупо по ключу) уже насрал своих данных в это общее место, то повторно не вызывать тучу говна, которое пойдет куда-то и будет получать эти данные заново.
В идеальном случае требуется такое поведение, чтобы эта $this->data была для всех классов-потомков глобальной.
Педалить еще одну сущность которая будет все это дело хранить? Блин, костыль же. А завтра мне понадобится аналогичное поведение в другом месте. Опять педалить дополнительную сущность?