Comment accéder aux variables de classe parent protégées dans les sous-classes PHP ?

Patricia Arquette
Libérer: 2024-10-23 00:44:03
original
287 Les gens l'ont consulté

How to Access Protected Parent Class Variables in PHP Subclasses?

Accès aux variables de classe parent en PHP

Dans la programmation orientée objet, les classes enfants héritent des propriétés et des méthodes de leurs classes parents. Cependant, accéder aux variables de la classe parent directement au sein de la classe enfant peut parfois présenter des défis.

Considérez l'extrait de code suivant où la classe B étend la classe A :

<code class="php">class A {
    private $aa;
    protected $bb = 'parent bb';
    function __construct($arg) {}
    private function parentmethod($arg2) {}
}

class B extends A {
    function __construct($arg) {
        parent::__construct($arg);
    }
    function childfunction() {
        echo parent::$bb; //Fatal error: Undefined class constant 'bb' 
    }
}

$test = new B($some);
$test->childfunction();</code>
Copier après la connexion

Question :

Pourquoi la ligne fait-elle écho à parent::$bb; entraîner une erreur fatale ? Comment pouvons-nous accéder à la variable parent $bb dans la classe enfant ?

Réponse :

L'erreur se produit car $bb est une propriété protégée de la classe A, et protégée les propriétés ne sont pas accessibles directement depuis l'extérieur de la classe ou des sous-classes en utilisant la syntaxe parent ::. Au lieu de cela, nous pouvons accéder à $bb en utilisant la syntaxe suivante :

<code class="php">echo $this->bb;</code>
Copier après la connexion

Explication :

Le mot-clé $this fait référence à l'objet actuel. Puisque $bb est hérité par la classe B et devient une partie de l'objet actuel, nous pouvons y accéder en utilisant $this. Cette syntaxe accède efficacement à la variable héritée comme s'il s'agissait d'une propriété de la classe enfant.

Informations supplémentaires sur parent::

La syntaxe parent:: est utilisée pour accéder aux méthodes ou aux propriétés de la classe parent depuis la classe enfant. Il est généralement utilisé lorsque vous souhaitez remplacer une méthode de la classe parent ou y ajouter des fonctionnalités supplémentaires.

Par exemple, considérons le code suivant :

<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 ); // Calls the parent constructor
    }
}</code>
Copier après la connexion

Dans ce cas, le La méthode __construct() de la classe Bomber remplace la méthode __construct() du parent, mais l'utilise toujours pour initialiser la propriété pilote.

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!