Selbst gegen dies in PHP

PHP unterstützt Klassen und andere objektorientierte Konstrukte. Statische Funktionen und Variablen in PHP-Klassen sind keiner bestimmten Instanz der Klasse (dh einem Objekt) zugeordnet. Siehe Unterschied zwischen Objekt und Klasse .

Stattdessen werden statische Funktionen und Variablen der Klassendefinition selbst zugeordnet. Mit anderen Worten, alle Instanzen einer Klasse haben dieselbe statische Variable. Im Kontext einer Methode (Funktion) einer Klasse wird auf statische Variablen und Funktionen mit self:: zugegriffen. Andere Methoden und Variablen werden im Kontext eines Objekts (einer Instanz) einer Klasse verwendet, indem this-> .

Vergleichstabelle

Selbst gegen diese Vergleichstabelle
selbst Dies
Kann in statischen Funktionen verwendet werdenJaNein
zugängliche Klassenvariable und Methoden mitselbst::$ this-> (Beachten Sie, dass PHP> 5.3 die Verwendung von $ this mit statischen Variablen ermöglicht. Verwenden Sie $ this :: $ foo. $ this-> foo ist immer noch undefiniert, wenn $ foo eine statische Variable ist.)
Benötigt ein instanziiertes ObjektNeinJa

Selbst gegen dies in PHP - Beispiele

 Klasse exampleClass {public static $ foo; öffentliche $ bar; öffentliche Funktion reguläre Funktion () {echo $ this-> bar; } öffentliche statische Funktion staticFunction () {echo self :: $ foo; } öffentliche statische Funktion anotherStatFn () {self :: staticFunction (); } öffentliche Funktion regulärFnUsingStaticVar () {echo self :: $ foo; } // HINWEIS: Ab PHP 5.3 ist die Verwendung von $ this :: $ bar anstelle von self :: $ bar zulässig.} ExampleClass :: $ foo = "Hello"; $ obj = new exampleClass (); $ obj-> bar = "Welt!"; exampleClass :: staticFunction (); / * druckt Hallo * / $ obj-> reguläre Funktion (); / * druckt Welt! * / 

Statische Funktionen können nur statische Variablen verwenden. Statische Funktionen und Variablen werden über self :: functionName () oder self :: variableName referenziert. In dem oben gezeigten Beispiel wird auf statische Variablen mit dem Klassennamen (exampleClass :: $ foo) oder mit einem self :: (self :: $ foo) verwiesen, wenn sie in der statischen Methode [ named staticFunction () ] der Klasse verwendet werden .

Reguläre Funktionen und Variablen einer Klasse benötigen einen Objektkontext, auf den verwiesen werden kann. Sie können ohne Objektkontext nicht existieren. Der Objektkontext wird durch $ this bereitgestellt. Im obigen Beispiel ist $ bar eine reguläre Variable und wird daher als $ obj-> bar (im Objektkontext mit der Variablen obj ) oder als $ this-> bar (wiederum in einem Objektkontext innerhalb einer Methode eines Objekts) bezeichnet ).

self verwendet kein vorangestelltes $, da self keine Variable, sondern das Klassenkonstrukt selbst bezeichnet. $ Dies verweist auf eine bestimmte Variable, sodass ein $ vorangestellt ist.

Ähnlicher Artikel