zelf tegen dit in PHP

PHP ondersteunt klassen en andere objectgeoriënteerde constructies. Statische functies en variabelen in PHP-klassen zijn niet gekoppeld aan een specifiek exemplaar van de klasse (met andere woorden, een object). Zie het verschil tussen voorwerp en klasse.

In plaats daarvan zijn statische functies en variabelen gekoppeld aan de klassendefinitie zelf. Met andere woorden, alle exemplaren van een klasse delen dezelfde statische variabele. Binnen de context van een methode (functie) van een klasse worden statische variabelen en functies benaderd met behulp van zelf::. Andere methoden en variabelen worden gebruikt in de context van een object (een instantie) van een klasse, met behulp van this->.

Vergelijkingstabel

zelf tegen deze vergelijkingstabel
zelfdeze
Kan worden gebruikt in statische functies Ja Nee
toegankelijke klassenvariabele en methoden met zelf:: $ this-> (Merk op dat PHP> 5.3 het gebruik van $ this toestaat met statische variabelen $ this :: $ foo. $ this-> foo zal nog steeds ongedefinieerd zijn als $ foo een statische var is.)
Heeft een geïnstantieerd object nodig Nee Ja

zelf versus dit in PHP - Voorbeelden

class exampleClass public static $ foo; openbare $ balk; public function regularFunction () echo $ this-> bar;  public static function staticFunction () echo self :: $ foo;  public static function anotherStatFn () self :: staticFunction ();  public function regularFnUsingStaticVar () echo self :: $ foo;  // OPMERKING: Vanaf PHP 5.3 met $ this :: $ bar in plaats van self :: $ bar is toegestaan exampleClass :: $ foo = "Hello"; $ obj = new exampleClass (); $ obj-> bar = "World!"; exampleClass :: staticFunction (); / * print Hallo * / $ obj-> regularFunction (); / * print World! * / 

Statische functies kunnen alleen statische variabelen gebruiken. Statische functies en variabelen worden gerefereerd via zelf::functionName () of zelf::variableName. In het bovenstaande voorbeeld wordt naar statische variabelen verwezen met de klassenaam (exampleClass :: $ foo) of, met een zelf:: (self :: $ foo) wanneer gebruikt binnen de statische methode [genaamd staticFunction ()] van de klas.

Reguliere functies en variabelen van een klasse hebben een objectcontext waarnaar moet worden verwezen. Ze kunnen niet bestaan ​​zonder een objectcontext. De context van het object wordt geleverd door $ this. In het bovenstaande voorbeeld is $ bar een gewone variabele en daarom wordt er naar verwezen als $ obj-> bar (in de objectcontext met variabele obj) of als $ this-> bar (opnieuw in een objectcontext binnen een methode van een object).

zelf gebruikt geen voorgaande $ omdat zelf heeft geen betrekking op een variabele, maar op de klasseconstructie zelf. $ this verwijst naar een specifieke variabele zodat deze een voorgaande heeft $.

Referenties

  • Statisch trefwoord - PHP.net