Accéder aux variables de classe parent en PHP : un guide complet
L'accès aux variables de classe parent en PHP est crucial pour comprendre l'héritage et la programmation orientée objet notions. Dans l'exemple donné ci-dessous, nous avons deux classes, A et B, avec la classe A comme classe parent et la classe B comme classe enfant.
class A { private $aa; protected $bb = 'parent bb'; } class B extends A { function childfunction() { echo parent::$bb; // Error: Undefined class constant 'bb' } }
Le problème survient lorsque nous essayons d'accéder à la variable protégée. (bb) de la classe parent A à partir de la classe enfant B en utilisant parent::$bb. Cela entraîne une erreur fatale puisque $bb est défini comme protégé, ce qui signifie qu'il est accessible au sein de la classe elle-même et par les sous-classes, mais pas directement depuis l'extérieur de la classe.
Solution :
Pour résoudre ce problème, nous pouvons utiliser le mot-clé $this qui fait référence à l'objet courant :
echo $this->bb;
Le mot-clé $this donne accès aux variables et méthodes protégées et privées au sein de la classe actuelle, nous permettant d'afficher la valeur de la variable $bb dans ce cas.
Informations supplémentaires : Utilisation de parent::
En plus d'utiliser $this, nous pouvons également utilisez la syntaxe parent:: pour accéder aux variables et aux méthodes de la classe parent. Contrairement à $this, parent:: est utilisé lorsque nous souhaitons remplacer ou étendre les fonctionnalités de la classe parent.
Par exemple, supposons que nous souhaitions créer une nouvelle classe qui étend la classe Airplane et ajoute une propriété de navigateur. :
class Airplane { private $pilot; function __construct($pilot) { $this->pilot = $pilot; } } class Bomber extends Airplane { private $navigator; function __construct($pilot, $navigator) { parent::__construct($pilot); // Call parent constructor $this->navigator = $navigator; } }
Dans ce scénario, nous remplaçons la méthode __construct() dans la classe Bomber, mais nous utilisons toujours parent::__construct() pour garantir que la fonctionnalité d'origine de la classe Airplane est conservée.
Comprendre la différence entre $this et parent:: est essentiel pour exploiter efficacement l'héritage en PHP et créer un code robuste et maintenable.
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!