self vs. ovo u PHP-u

PHP podržava klase i druge objektno orijentirane konstrukte. samovajMože se koristiti u statičkim funkcijama Da Ne varijabla pristupačne klase i metode sa samouprave :: $ this-> (imajte na umu da PHP> 5.3 dozvoljava upotrebu $ this sa statičkim varijablama, koristite $ this :: $ foo. $ this-> foo će i dalje biti nedefinirano ako je $ foo statički var.) Potreban je trenutačni objekt Ne Da

Self vs This in PHP - Primjeri

primjer klaseClass public static $ foo; javni $ bar; javna funkcija regularFunction () echo $ this-> bar;  javna statička funkcija staticFunction () echo self :: $ foo;  javna statička funkcija elseStatFn () self :: staticFunction ();  javna funkcija regularnaFnUsingStaticVar () echo self :: $ foo;  // NAPOMENA: Od PHP 5.3 upotreba $ this :: $ bar umjesto self :: $ bar je dopuštena exampleClass :: $ foo = "Pozdrav"; $ obj = novi primjerClass (); $ obj-> bar = "Svijet!"; exampleClass :: staticFunction (); / * ispisuje Hello * / $ obj-> regularFunction (); / * ispisuje svijet! * / 

Statičke funkcije mogu koristiti samo statičke varijable. Statičke funkcije i varijable su referencirane putem samouprave ::functionName () ili samouprave ::variableName. U gornjem prikazanom primjeru, statičke se varijable pozivaju s nazivom klase (exampleClass :: $ foo) ili sa a samouprave :: (self :: $ foo) kada se koristi u statičkoj metodi [imenovan staticFunction ()] klase.

Redovite funkcije i varijable klase trebaju referencirati objektni kontekst. Oni ne mogu postojati bez objektnog konteksta. Okvir objekta pruža $ ta. U gornjem primjeru, $ bar je redovna varijabla, pa se navodi kao $ obj-> bar (u objektnom kontekstu sa varijablom obj) ili kao $ this-> traka (opet u objektnom kontekstu unutar metode objekta).

sam ne koristi prethodno $ jer sam Ne konotira varijablu, već samu konstrukciju klase. $ ta odnosi se na određenu varijablu, tako da ima prethodnu $.

Reference

  • Statička ključna riječ - PHP.net