Я понимаю, что это супер-старый, но на случай, если кому-то еще понадобится ключ ...
Рассматривали ли вы использование статических переменных?
Шаблон проектирования PHP OOP таков, что статически объявленные переменные в классе parent остаются такими же в классе child .
Например ...
<?php
class A {
public static $test = 'a';
public function test() {
echo 'Test is: '.self::$test;
}
}
class B extends A {
public static $test = 'b';
}
$obj = new B;
$obj->test();
?>
Выполнение этого кода (на PHP 5.3 - я уверен, что он одинаков и для других версий) даст вам следующий результат:
Испытание: a
Из того, что я мог бы собрать в вашем OP, вы ищете способ, которым переменные родительского класса могут остаться - даже в расширенных классах. Это решает эту проблему.
Чтобы публично вызывать переменные вне области действия класса (т. Е. Там, где вы обычно пишете $ obj-> vars ), вам необходимо создать функцию в родительском классе, которая ссылается на self::$variable_name
чтобы он мог выбросить эту переменную обратно в код, который использует либо этот класс, либо любой другой класс, расширяющий его.
Например, что-то вроде:
public function get_variable() {
return self::$variable;
}
Вы также можете создать магический метод, который будет динамически отбрасывать переменную self :: $ в зависимости от того, для чего вы запрашиваете экземпляр - то есть для метода или переменной. Вы можете связать код, чтобы отбросить эквивалент переменной self :: $ в любом случае.
Прочитайте http://php.net/manual/en/language.oop5.magic.php для получения дополнительной информации о различных магических методах, которые позволяют вам делать подобные вещи.
ОП был немного загадочным, поэтому я не был уверен, что это именно то, что вам нужно, но я не видел, чтобы кто-нибудь еще ссылался на статические переменные, поэтому думал, что я включу - надеюсь, это поможет!