auto vs. questo in PHP

PHP supporta classi e altri costrutti orientati agli oggetti. Le funzioni statiche e le variabili nelle classi PHP non sono associate ad alcuna istanza specifica della classe (in altre parole, un oggetto). Vedere la differenza tra oggetto e classe.

Invece, le funzioni statiche e le variabili sono associate alla definizione della classe stessa. In altre parole, tutte le istanze di una classe condividono la stessa variabile statica. Nel contesto di un metodo (funzione) di una classe, si accede a variabili e funzioni statiche usando se stesso::. Altri metodi e variabili sono usati nel contesto di un oggetto (un'istanza) di una classe, usando this->.

Grafico comparativo

auto contro questa tabella di confronto
se stessoQuesto
Può essere utilizzato in funzioni statiche No
variabile di classe accessibile e metodi con se stesso:: $ this-> (Si noti che PHP> 5.3 consente l'uso di $ this con variabili statiche usa $ this :: $ pippo. $ this-> foo sarà ancora indefinito se $ pippo è una variabile statica.)
Ha bisogno di un oggetto istanziato No

auto vs questo in PHP - Esempi

class exampleClass public static $ foo; pubblico $ bar; public function regularFunction () echo $ this-> bar;  public static function staticFunction () echo self :: $ pippo;  public static function anotherStatFn () self :: staticFunction ();  public function regularFnUsingStaticVar () echo self :: $ pippo;  // NOTA: A partire da PHP 5.3 usando $ this :: $ invece di self :: $ bar è permesso exampleClass :: $ foo = "Hello"; $ obj = new exampleClass (); $ obj-> bar = "Mondo!"; ExampleClass :: staticFunction (); / * stampa Hello * / $ obj-> regularFunction (); / * stampa World! * / 

Le funzioni statiche possono utilizzare solo variabili statiche. Le funzioni statiche e le variabili sono referenziate tramite se stesso::functionName () o se stesso::variableName. Nell'esempio sopra riportato, le variabili statiche sono referenziate con il nome della classe (esempioClass :: $ pippo) o, con a se stesso:: (self :: $ foo) se usato nel metodo statico [chiamato staticFunction ()] della classe.

Le funzioni e le variabili regolari di una classe necessitano di un riferimento a un contesto oggetto. Non possono esistere senza un contesto di oggetto. Il contesto dell'oggetto è fornito da $ questo. Nell'esempio sopra, $ bar è una variabile regolare e quindi è referenziata come $ obj-> bar (nel contesto dell'oggetto con variabile obj) o $ this-> bar (di nuovo in un contesto oggetto all'interno di un metodo di un oggetto).

se stesso non usa un precedente $ perché se stesso non connota una variabile ma la classe costruisce se stessa. $ questo fa riferimento a una variabile specifica quindi ha una precedente $.

Riferimenti

  • Parola chiave statica - PHP.net