auto vs. esto en PHP

PHP soporta clases y otras construcciones orientadas a objetos. Las funciones y variables estáticas en las clases de PHP no están asociadas con ninguna instancia específica de la clase (en otras palabras, un objeto). Ver diferencia entre objeto y clase.

En cambio, las funciones y variables estáticas están asociadas con la definición de clase en sí. En otras palabras, todas las instancias de una clase comparten la misma variable estática. En el contexto de un método (función) de una clase, se accede a las variables y funciones estáticas usando yo::. Otros métodos y variables se utilizan en el contexto de un objeto (una instancia) de una clase, usando esto->.

Gráfica comparativa

auto frente a este cuadro comparativo
yoesta
Puede ser utilizado en funciones estáticas No
variable de clase accesible y métodos con yo:: $ this-> (Tenga en cuenta que PHP> 5.3 permite el uso de $ this con variables estáticas use $ this :: $ foo. $ this-> foo aún no estará definido si $ foo es una var. estática)
Necesita un objeto instanciado No

auto vs esto en PHP - Ejemplos

clase exampleClass public static $ foo; público $ bar; public function regularFunction () echo $ this-> bar;  static static function staticFunction () echo self :: $ foo;  función estática pública anotherStatFn () self :: staticFunction ();  public function regularFnUsingStaticVar () echo self :: $ foo;  // NOTA: A partir de PHP 5.3 se usa $ this :: $ bar en lugar de self :: $ bar está permitido exampleClass :: $ foo = "Hola"; $ obj = new exampleClass (); $ obj-> bar = "World!"; exampleClass :: staticFunction (); / * imprime Hello * / $ obj-> regularFunction (); / * imprime el mundo! * / 

Las funciones estáticas solo pueden utilizar variables estáticas. Las funciones y variables estáticas son referenciadas a través de yo::functionName () o yo::nombre de la variable. En el ejemplo que se muestra arriba, se hace referencia a las variables estáticas con el nombre de la clase (exampleClass :: $ foo) o, con una yo:: (self :: $ foo) cuando se usa dentro del método estático [llamado staticFunction ()] de la clase.

Las funciones y variables regulares de una clase necesitan que se haga referencia a un contexto de objeto. No pueden existir sin un contexto de objeto. El contexto del objeto es proporcionado por $ esto. En el ejemplo anterior, $ bar es una variable regular y, por lo tanto, se denomina $ obj-> bar (en el contexto del objeto con variable obj) o como $ this-> bar (nuevamente en un contexto de objeto dentro de un método de un objeto).

yo no usa un precedente PS porque yo No connota una variable pero la clase misma se construye.. $ esto hace referencia a una variable específica por lo que tiene un precedente PS.

Referencias

  • Palabra clave estática - PHP.net