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 ?

Susan Sarandon
Libérer: 2024-10-22 22:08:29
original
321 Les gens l'ont consulté

How to Access Parent Class Variables in PHP?

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'
    }
}
Copier après la connexion

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;
Copier après la connexion

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;
    }
}
Copier après la connexion

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!

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