Accéder à la variable de classe parent en PHP
En programmation orientée objet, accéder à la variable de classe parent au sein d'une classe enfant peut présenter un défi. Considérez le code ci-dessous :
<code class="php">class A { private $aa; protected $bb = 'parent bb'; // ... } class B extends A { function childfunction() { echo parent::$bb; // Fatal error: Undefined class constant 'bb' } } </code>
Tenter d'accéder à la variable $bb à l'aide de parent::$bb entraîne une erreur. En effet, la variable est protégée et les variables protégées ne sont accessibles qu'au sein de la classe et de ses classes enfants.
Solution : Utiliser $this->bb
Pour accédez correctement à la variable $bb dans la classe enfant, utilisez $this->bb. Cette syntaxe fait référence à la variable d'instance de l'objet actuel, qui inclut les variables héritées de la classe parent.
<code class="php">echo $this->bb;</code>
La variable $bb est héritée et n'est pas privée, elle fait donc partie de l'objet actuel et peut accessible à l'aide du mot-clé $this.
Informations supplémentaires
Pour les situations où vous devez modifier le comportement d'une méthode de la classe parent, utilisez parent ::. Par exemple, considérons ce qui suit :
<code class="php">class Airplane { private $pilot; public function __construct( $pilot ) { $this->pilot = $pilot; } } class Bomber extends Airplane { private $navigator; public function __construct( $pilot, $navigator ) { $this->navigator = $navigator; parent::__construct( $pilot ); // Assign to this->pilot } }</code>
Ici, parent:: étend le constructeur de la classe Airplane pour ajouter la variable $navigator. Cela vous permet de suivre le principe DRY tout en offrant la fonctionnalité souhaitée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!