Maison > développement back-end > tutoriel php > Quand utiliser « self » plutôt que « $this » en PHP 5 pour accéder aux membres de la classe ?

Quand utiliser « self » plutôt que « $this » en PHP 5 pour accéder aux membres de la classe ?

Patricia Arquette
Libérer: 2024-12-17 15:41:11
original
1064 Les gens l'ont consulté

When to Use `self` vs. `$this` in PHP 5 to Access Class Members?

Quand utiliser 'self' sur '$this' en PHP 5

En PHP 5, utiliser le mot-clé correct pour faire référence à la classe les membres et les méthodes sont cruciaux. Lorsqu'il s'agit de choisir entre « self » et « $this », la décision dépend si vous faites référence à un membre statique ou à un membre d'instance.

Utiliser « $this » pour les membres d'instance.

'$this' fait référence à l'instance actuelle de l'objet. Il permet d'accéder aux membres non statiques, spécifiques à chaque instance. Par exemple :

class MyClass {
    private $member = 1;

    function __construct() {
        echo $this->member; // Outputs 1
    }
}
Copier après la connexion

Utilisation de « self » pour les membres statiques

« self » fait référence à la classe actuelle, quelle que soit l'instance. Il est utilisé pour accéder aux membres statiques, qui sont partagés entre toutes les instances de la classe. Par exemple :

class MyClass {
    private static $staticMember = 2;

    function __construct() {
        echo self::$staticMember; // Outputs 2
    }
}
Copier après la connexion

Polymorphisme et fonctions membres

'$this' active le polymorphisme, permettant aux classes dérivées de remplacer les fonctions membres de la classe parent. Par exemple :

class BaseClass {
    function foo() {
        echo 'BaseClass::foo()';
    }
}

class DerivedClass extends BaseClass {
    function foo() {
        echo 'DerivedClass::foo()';
    }
}

$derivedObject = new DerivedClass();
$derivedObject->foo(); // Outputs 'DerivedClass::foo()'
Copier après la connexion

Suppression du polymorphisme avec 'self'

En utilisant 'self' au lieu de '$this' dans les fonctions membres, vous pouvez supprimer le comportement polymorphe . La fonction appellera toujours l'implémentation depuis la classe parent, quel que soit le type réel de l'objet. Par exemple :

class BaseClass {
    function foo() {
        echo 'BaseClass::foo()';
    }
}

class DerivedClass extends BaseClass {
    function foo() {
        echo 'DerivedClass::foo()';
    }
}

$derivedObject = new DerivedClass();
$derivedObject->self::foo(); // Outputs 'BaseClass::foo()'
Copier après la connexion

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 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