Heim > Backend-Entwicklung > PHP-Tutorial > Wann sollte „self' vs. „$this' in PHP 5 verwendet werden, um auf Klassenmitglieder zuzugreifen?

Wann sollte „self' vs. „$this' in PHP 5 verwendet werden, um auf Klassenmitglieder zuzugreifen?

Patricia Arquette
Freigeben: 2024-12-17 15:41:11
Original
956 Leute haben es durchsucht

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

Wann sollte in PHP 5 „self“ anstelle von „$this“ verwendet werden?

Verwenden Sie in PHP 5 das richtige Schlüsselwort, um auf die Klasse zu verweisen Mitglieder und Methoden sind entscheidend. Bei der Wahl zwischen „self“ und „$this“ hängt die Entscheidung davon ab, ob Sie auf ein statisches Mitglied oder ein Instanzmitglied verweisen.

Verwenden von „$this“ für Instanzmitglieder

'$this' bezieht sich auf die aktuelle Instanz des Objekts. Es wird verwendet, um auf nicht statische Mitglieder zuzugreifen, die für jede Instanz spezifisch sind. Zum Beispiel:

class MyClass {
    private $member = 1;

    function __construct() {
        echo $this->member; // Outputs 1
    }
}
Nach dem Login kopieren

Verwendung von „self“ für statische Mitglieder

„self“ bezieht sich auf die aktuelle Klasse, unabhängig von der Instanz. Es wird verwendet, um auf statische Mitglieder zuzugreifen, die von allen Instanzen der Klasse gemeinsam genutzt werden. Zum Beispiel:

class MyClass {
    private static $staticMember = 2;

    function __construct() {
        echo self::$staticMember; // Outputs 2
    }
}
Nach dem Login kopieren

Polymorphismus und Mitgliedsfunktionen

'$this' aktiviert Polymorphismus, sodass abgeleitete Klassen Mitgliedsfunktionen der übergeordneten Klasse überschreiben können. Zum Beispiel:

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

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

$derivedObject = new DerivedClass();
$derivedObject->foo(); // Outputs 'DerivedClass::foo()'
Nach dem Login kopieren

Polymorphismus mit „self“ unterdrücken

Durch die Verwendung von „self“ anstelle von „$this“ in Mitgliedsfunktionen können Sie polymorphes Verhalten unterdrücken . Die Funktion ruft immer die Implementierung aus der übergeordneten Klasse auf, unabhängig vom tatsächlichen Typ des Objekts. Zum Beispiel:

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

Das obige ist der detaillierte Inhalt vonWann sollte „self' vs. „$this' in PHP 5 verwendet werden, um auf Klassenmitglieder zuzugreifen?. 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