Если я объявить базовый класс следующим образом:Есть ли способ, чтобы 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, а также наследование, которое позволит это. Я уже взламываю свой путь вокруг этого ... Но, похоже, не имеет смысла, что незаявленное статическое свойство будет падать на родителя для значения !?
Я создал следующий отчет PHP ошибка: http://bugs.php.net/49105 Я призываю людей пойти проверить его и оказать поддержку. Это довольно ограничительное ограничение. Нынешнее поведение также совершенно бессмысленно. –
Кажется, что люди смирились с дефолтным поведением, которое не является интуитивным. Проблема здесь в том, что PHP имеет неправильное поведение по умолчанию, или должен быть способ динамического объявления свойств. –
Я полностью поддерживаю вас в ваших поисках, это поведение очень раздражает! К сожалению, похоже, чтобы здесь остаться. – djfm