Heim > Backend-Entwicklung > PHP-Tutorial > PHP 5: „$this' vs. „self' – Wann sollte man jedes verwenden?

PHP 5: „$this' vs. „self' – Wann sollte man jedes verwenden?

Patricia Arquette
Freigeben: 2024-12-20 06:34:10
Original
648 Leute haben es durchsucht

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

Selbst vs. $this: Wann und wie man jedes verwendet

Frage:

Wie unterscheiden sich die Schlüsselwörter „self“ und „$this“ in PHP 5 in ihrer Verwendung? Wann sollte jeder richtig verwendet werden?

Antwort:

Kurze Antwort:

Verwenden Sie „$this“, um darauf zu verweisen die Instanzvariablen und -methoden des aktuellen Objekts. Verwenden Sie „self“, um auf die statischen Variablen und Methoden der aktuellen Klasse zu verweisen.

Vollständige Antwort:

Nichtstatische vs. statische Mitglieder:

  • „$this->member“ greift auf nicht-statische Mitgliedsvariablen und Methoden zu, die für den aktuellen Typ spezifisch sind Objekt.
  • "self::$member" greift auf statische Mitgliedsvariablen und Methoden zu, die von allen Instanzen der Klasse gemeinsam genutzt werden.

Polymorphismus:

  • „$this“ kann Polymorphismus demonstrieren, indem in abgeleiteten Klassen definierte Methoden aufgerufen werden.
  • „self“ unterdrückt Polymorphismus und ruft immer die in der aktuellen Klasse definierte Methode auf.

Beispiel (richtige Verwendung):

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
Nach dem Login kopieren

Beispiel (falsche Verwendung):

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
Nach dem Login kopieren

Unterdrücken Polymorphismus:

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()
Nach dem Login kopieren

Zusammenfassung:

Verwenden Sie „$this“ für nicht-statischen Mitgliedszugriff und Polymorphismus. Verwenden Sie „self“ für den Zugriff auf statische Mitglieder und wenn Sie Polymorphismus unterdrücken müssen.

Das obige ist der detaillierte Inhalt vonPHP 5: „$this' vs. „self' – Wann sollte man jedes verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage