Si je déclare une classe de base comme suit:Existe-t-il un moyen d'avoir des sous-classes PHP héritant des propriétés (statique et instance)?
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);
}
}
puis l'étendre:
class Child extends Parent {
}
puis faire:
Parent::yeah();
Parent::lateStaticDebug(); // "YEAH"
Child::nope();
Child::lateStaticDebug(); // "NOPE"
Parent::yeah();
Child::lateStaticDebug() // "YEAH"
Est-il possible d'avoir mon deuxième classe qui hérite de la première hérite également des propriétés et pas seulement des méthodes?
Je me demandais juste s'il y a quelque chose à propos de la liaison statique tardive de PHP et aussi de l'héritage qui permettrait cela. Je suis déjà en train de pirater mon chemin ... Mais cela ne semble pas logique qu'une propriété statique non déclarée retombe sur son parent pour une valeur!?
J'ai créé le bug PHP rapport suivant: http://bugs.php.net/49105 J'encourage les gens à aller vérifier et apporter leur soutien. C'est une limitation assez restrictive. Le comportement actuel est aussi complètement inutile. –
Il semble que les gens se soient résignés au comportement par défaut qui n'est pas intuitif. Le problème ici est soit que PHP a un comportement par défaut incorrect, soit qu'il doit exister un moyen de déclarer dynamiquement les propriétés. –
Je vous soutiens totalement dans votre quête, ce comportement est très énervant! Malheureusement, il semble être là pour rester. – djfm