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

source:php.cn
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