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

PHP `self` vs `$this` : quand utiliser chacun ?

Barbara Streisand
Libérer: 2024-12-24 01:17:10
original
273 Les gens l'ont consulté

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

Quand utiliser 'Self' et '$This' en PHP

En PHP, comprendre la distinction entre 'self' et '$ ceci est crucial. « Self » fait référence à la classe actuelle, tandis que « $this » fait référence à l'objet actuel.

Quand utiliser « Self » :

  • Accès aux membres statiques (variables ou méthodes) :

    class MyClass {
        static $static_member = 10;
    }
    echo MyClass::$static_member; // Output: 10
    Copier après la connexion
  • Appel de la classe parent méthodes :

    class ChildClass extends ParentClass {
        public function myMethod() {
            self::parentMethod(); // Calls the parent class method
        }
    }
    Copier après la connexion

Quand utiliser '$This' :

  • Accès aux membres non statiques :

    class MyClass {
        private $instance_member = 20;
    }
    $obj = new MyClass();
    echo $obj->instance_member; // Output: 20
    Copier après la connexion
  • Instance appelante méthodes :

    class MyClass {
        public function myMethod() {
            echo $this->instance_member; // Accesses the instance member
        }
    }
    Copier après la connexion
  • Polymorphisme : appel de méthodes d'instance à partir de classes dérivées :

    class BaseClass {
        public function myMethod() {
            echo 'BaseClass::myMethod()';
        }
    }
    class DerivedClass extends BaseClass {
        override public function myMethod() {
            echo 'DerivedClass::myMethod()';
        }
    }
    $baseObj = new BaseClass();
    $derivedObj = new DerivedClass();
    $baseObj->myMethod(); // Output: 'BaseClass::myMethod()'
    $derivedObj->myMethod(); // Output: 'DerivedClass::myMethod()'
    Copier après la connexion
  • Suppression du polymorphisme : appel de méthodes de classe parent à l'aide de ' soi' dans les classes dérivées :

    class BaseClass {
        public function myMethod() {
            echo 'BaseClass::myMethod()';
        }
    }
    class DerivedClass extends BaseClass {
        override public function myMethod() {
            parent::myMethod(); // Calls the BaseClass's myMethod() using self::
        }
    }
    $derivedObj = new DerivedClass();
    $derivedObj->myMethod(); // Output: 'BaseClass::myMethod()'
    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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal