J'ai vu quelques questions à propos de l'accès à un attribut de classe parent (comme PHP Accessing Parent Class Variable) mais j'ai l'impression de lutter dans un cas énervé (je n'ai pas besoin de ce modèle, mais de curiosité ...):Accéder à une propriété PHP surchargée
Que faire si la classe enfant remplace une variable de classe parente et souhaite toujours y accéder?
Exemple:
class A {
protected $x = 'a';
}
class B extends A {
protected $x = 'b';
public function showX() {
var_dump(array(
'this->x' => $this->x,
'parent->x' => '??',
}
}
$b = new B();
$b->showX();
Sans compter sur une méthode getX()
sur parent (et utiliser un parent::getX()
dans la classe B ou tout simplement un $this->getX()
si B ne pas remplacer cette méthode getX
), comment obtenir un résultat comme:
this->x: 'b'
parent->x: 'a'
comme http://php.net/manual/pl/keyword.parent.php#94177 états, en utilisant un parent::$x
ne fonctionnera pas, parce qu'il rechercherait l'attribut statique non existant $x
. Tout moyen de travail?
Une fois que vous avez écrasé 'parent :: $ x' ... il est écrasé. Pas vraiment différent de réaffecter procédurellement une variable plus tard dans le script - vous ne pouvez pas récupérer la valeur d'origine. – CD001
Vous pouvez ajouter un getter pour 'x' dans le parent, puis redeclare' A' et utiliser le getter - https://repl.it/M6uV –
Ce que vous essayez de faire est de donner une valeur à une variable, puis écraser la valeur et ensuite vous voulez obtenir la valeur précédente. –