расширенные классы наследуют статические значения переменных (PHP)? - PullRequest
1 голос
/ 20 февраля 2011

Если у меня есть базовый класс, который содержит статическую переменную, я затем устанавливаю эту статическую переменную, а затем получаю класс, который расширяет базовый класс, сохранит ли расширенный класс значение статической переменной, которую я уже установил в базовый класс?

1 Ответ

2 голосов
/ 20 февраля 2011

Да, хотя они являются разными переменными, статические переменные в обоих классах находятся в одном наборе ссылок.

Вы можете нарушить этот набор ссылок, используя присвоение ссылок (=&) илипереопределить его в расширенном классе:

class base {
    public static $var;
}
class extended extends base {}

extended::$var = 8; // base::$var == 8
$t = 6;
extended::$var =& $t; // base::$var == 8; extended::$var == 6

class base {
    public static $var;
}
class extended extends base {
    public static $var;
}

extended::$var = 8; // base::$var == null; extended::$var == 8
...