self vs. toto v PHP

PHP podporuje třídy a další objektově orientované konstrukty. játentoLze použít ve statických funkcích Ano Ne dostupná proměnná třídy a metody s já:: $ this-> (Všimněte si, že PHP> 5.3 umožňuje použití $ this se statickými proměnnými pomocí $ this :: $ foo. $ this-> foo bude stále nedefinováno, pokud $ foo je statická var.) Vyžaduje instanční objekt Ne Ano

self vs this in PHP - Příklady

class exampleClass public static $ foo; veřejný $ bar; public function regularFunction () echo $ this-> bar;  public static function staticFunction () echo self :: $ foo;  veřejná statická funkce otherStatFn () self :: staticFunction ();  public function regularFnUsingStaticVar () echo self :: $ foo;  // POZNÁMKA: Od PHP 5.3 je použití $ this :: $ bar místo self :: $ bar povoleno exampleClass :: $ foo = "Hello"; $ obj = new exampleClass (); $ obj-> bar = "Svět!"; exampleClass :: staticFunction (); / * tiskne Hello * / $ obj-> regularFunction (); / * tiskne svět! * / 

Statické funkce mohou používat pouze statické proměnné. Statické funkce a proměnné jsou odkazovány přes já::functionName () nebo já::název proměnné. Ve výše uvedeném příkladu jsou statické proměnné odkazovány na název třídy (exampleClass :: $ foo) nebo, a já:: (self :: $ foo) při použití v rámci statické metody [pojmenovaný staticFunction ()] třídy.

Běžné funkce a proměnné třídy vyžadují odkaz na kontext objektu. Nemohou existovat bez kontextu objektu. Kontext objektu poskytuje $ this. Ve výše uvedeném příkladu je $ bar pravidelnou proměnnou, a proto je označován jako $ obj-> bar (v kontextu objektu s proměnnou obj) nebo jako $ this-> panel (opět v kontextu objektu v rámci metody objektu).

nepoužívá předchozí $ protože nepředstavuje proměnnou, ale samotný konstrukt třídy. $ this odkazuje na konkrétní proměnnou, takže má předchozí $.

Reference

  • Statické klíčové slovo - PHP.net