Maison > développement back-end > tutoriel php > PHP 5 : `$this` vs `self` – Quand utiliser chacun ?

PHP 5 : `$this` vs `self` – Quand utiliser chacun ?

Patricia Arquette
Libérer: 2024-12-20 06:34:10
original
621 Les gens l'ont consulté

PHP 5: `$this` vs. `self` – When to Use Each?

Soi contre $this : quand et comment utiliser chacun

Question :

En PHP 5, en quoi les mots-clés « self » et « $this » diffèrent-ils dans leur utilisation ? Quand chacun doit-il être utilisé de manière appropriée ?

Réponse :

Réponse courte :

Utilisez « $this » pour faire référence à les variables et méthodes d'instance de l'objet actuel. Utilisez « self » pour faire référence aux variables et méthodes statiques de la classe actuelle.

Réponse complète :

Membres non statiques ou statiques :

  • "$this->member" accède aux variables membres non statiques et aux méthodes spécifiques au membre actuel object.
  • "self::$member" accède aux variables membres statiques et aux méthodes partagées par toutes les instances de la classe.

Polymorphisme :

  • "$this" peut démontrer le polymorphisme en appelant des méthodes définies dans les classes dérivées.
  • "self" supprime le polymorphisme et appelle toujours la méthode définie dans la classe actuelle.

Exemple (utilisation correcte) :

class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo $this->non_static_member . ' ' . self::$static_member;
    }
}

new X(); // Output: 1 2
Copier après la connexion

Exemple (utilisation incorrecte) :

class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo self::$non_static_member . ' ' . $this->static_member; // Incorrect usage
    }
}

new X(); // Error: Undefined properties
Copier après la connexion

Suppression Polymorphisme :

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

    function bar() {
        self::foo(); // Suppresses polymorphism
    }
}

class Y extends X {
    function foo() {
        echo 'Y::foo()';
    }
}

$x = new Y();
$x->bar(); // Output: X::foo()
Copier après la connexion

Résumé :

Utilisez "$this" pour l'accès aux membres non statiques et le polymorphisme. Utilisez "self" pour l'accès aux membres statiques et lorsque vous devez supprimer le polymorphisme.

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