Есть ли способ, чтобы подклассы PHP наследовали свойства (как статические, так и экземпляры)?

Если я объявляю базовый класс следующим образом:

abstract class Parent { protected static $message = "UNTOUCHED"; public static function yeah() { static::$message = "YEAH"; } public static function nope() { static::$message = "NOPE"; } public static function lateStaticDebug() { return(static::$message); } } 

а затем расширьте его:

 class Child extends Parent { } 

а затем выполните следующее:

 Parent::yeah(); Parent::lateStaticDebug(); // "YEAH" Child::nope(); Child::lateStaticDebug(); // "NOPE" Parent::yeah(); Child::lateStaticDebug() // "YEAH" 

Есть ли способ, чтобы мой второй класс, который наследует от первого, также наследует свойства, а не только методы?

Мне просто интересно, есть ли что-то о поздней статической привязке PHP, а также наследование, которое позволит это. Я уже взламываю свой путь вокруг этого … Но, похоже, не имеет смысла, что незаявленное статическое свойство будет падать на родителя для значения !?

Наследование и static свойства когда-то приводят к «странным» вещам в PHP.

Вы должны взглянуть на Late Static Bindings в руководстве PHP: он объясняет, что может случиться при наследовании и использовании static свойств в PHP <= 5.2; и дает решения для PHP> = 5.3, где вы можете использовать static:: keywords вместо self:: , так что статическая привязка выполняется при выполнении (а не компиляции) времени.

Ответ «с обходом».

Вам нужно создать статический конструктор и вызвать его для копирования свойства.