self vs. toto v PHP

PHP podporuje triedy a iné objektovo orientované konštrukty. sámtotoMôže byť použitý v statických funkciách Áno žiadny dostupná premenná triedy a metódy s vlastné :: $ this-> (Všimnite si, že PHP> 5.3 umožňuje použitie $ this so statickými premennými pomocou $ this :: $ foo. $ this-> foo bude stále nedefinované, ak $ foo je statický var.) Vyžaduje okamžitý objekt žiadny Áno

self vs this in PHP - Príklady

class exampleClass public static $ foo; verejný $ bar; public function regularFunction () echo $ this-> bar;  public static function staticFunction () echo self :: $ foo;  verejná statická funkcia otherStatFn () self :: staticFunction ();  public function regularFnUsingStaticVar () echo self :: $ foo;  // POZNÁMKA: Od PHP 5.3 je použitie $ this :: $ bar namiesto self :: $ bar povolené exampleClass :: $ foo = "Hello"; $ obj = new exampleClass (); $ obj-> bar = "Svet!"; exampleClass :: staticFunction (); / * tlačí Ahoj * / $ obj-> regularFunction (); / * tlačí svet! * / 

Statické funkcie môžu používať iba statické premenné. Statické funkcie a premenné sú uvádzané prostredníctvom vlastné ::functionName () alebo vlastné ::názov_premennej. Vo vyššie uvedenom príklade sa na statické premenné odkazuje s názvom triedy (exampleClass :: $ foo) alebo s a vlastné :: (self :: $ foo), ak sa použije v rámci statickej metódy [s názvom staticFunction ()] triedy.

Na bežné funkcie a premenné triedy je potrebné odkazovať na kontext objektu. Nemôžu existovať bez kontextu objektu. Kontext objektu poskytuje $ this. Vo vyššie uvedenom príklade je $ bar pravidelnou premennou, a preto sa na ňu odkazuje ako $ obj-> bar (v kontexte objektu s premennou obj) alebo ako $ this-> panel (opäť v kontexte objektu v rámci metódy objektu).

sám nepoužíva predchádzajúce $ pretože sám nepredstavuje premennú, ale samotný konštrukt triedy. $ this odkazuje na konkrétnu premennú, takže má predchádzajúcu $.

Referencie

  • Statické kľúčové slovo - PHP.net