Maison >développement back-end >tutoriel php >Comment accéder aux variables de classe parent en PHP

Comment accéder aux variables de classe parent en PHP

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-22 23:48:281009parcourir

How to Access Parent Class Variables in PHP

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!

Déclaration:
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