self vs. to v PHP

PHP podpira razrede in druge objektno usmerjene konstrukte. jaztoLahko se uporablja pri statičnih funkcijah Da Ne spremenljivka dostopnega razreda in metode z jaz :: $ this-> (Upoštevajte, da PHP> 5.3 dovoljuje uporabo $ this s statičnimi spremenljivkami use $ this :: $ foo. $ this-> foo bo še vedno nedefiniran, če je $ foo statična var.) Potreben je primeren predmet Ne Da

Self vs to v PHP - Primeri

class exampleClass javni statični $ foo; javna $ bar; javna funkcija regularFunction () echo $ this-> bar;  javna statična funkcija staticFunction () echo self :: $ foo;  javna statična funkcija AnotherStatFn () self :: staticFunction ();  javna funkcija regularFnUsingStaticVar () echo self :: $ foo;  // OPOMBA: Od PHP 5.3 uporabljamo $ this :: $ bar namesto self :: $ bar je dovoljen exampleClass :: $ foo = "Pozdravljeni"; $ obj = nov primerClass (); $ obj-> bar = "Svet!"; exampleClass :: staticFunction (); / * natisne Hello! / $ obj-> regularFunction (); / * tiska svet! * / 

Statične funkcije lahko uporabljajo samo statične spremenljivke. Statične funkcije in spremenljivke se sklicujejo prek jaz ::functionName () ali jaz ::variableName. V zgornjem primeru se statične spremenljivke sklicujejo na ime razreda (exampleClass :: $ foo) ali z jaz :: (self :: $ foo), kadar se uporablja v statični metodi [imenovan staticFunction ()] razreda.

Redne funkcije in spremenljivke razreda potrebujejo referenčni kontekst predmeta. Ne morejo obstajati brez objektnega konteksta. Objektni kontekst zagotavlja $ to. V zgornjem primeru je $ bar navadna spremenljivka, zato je navedena kot $ obj-> bar (v objektnem kontekstu s spremenljivko obj) ali kot vrstica $ this-> (spet v kontekstu predmeta znotraj metode predmeta).

jaz ne uporablja predhodnega $ Ker jaz ne pomeni spremenljivke, temveč samo konstrukcijo razreda. $ to se sklicuje na določeno spremenljivko, tako da ima predhodno $.

Reference

  • Statična ključna beseda - PHP.net