РЕДАКТИРОВАТЬ: При дальнейшем исследовании, я думаю, что вы спрашиваете, не представляется возможным напрямую, даже с поздним статическим связыванием. На самом деле, я немного удивлен.
Ответ на этот вопрос дает некоторые обходные пути.
Оригинальный ответ:
В родительском классе, если вы ссылаетесь на статическую переменную в форме:
self::$var
Он будет использовать эту же переменную во всех унаследованных классах (поэтому все дочерние классы будут по-прежнему обращаться к переменной в родительском классе).
Это связано с тем, что привязка для ключевого слова self
выполняется во время компиляции, а не во время выполнения.
Начиная с PHP 5.3, PHP поддерживает позднюю статическую привязку с использованием ключевого слова static
. Итак, в ваших классах обращайтесь к переменной с помощью:
static::$var
И «static» будет разрешен дочернему классу во время выполнения, поэтому для каждого дочернего класса будет отдельная статическая переменная.