auto vs. isso em PHP

PHP suporta classes e outras construções orientadas a objetos. autoestaPode ser usado em funções estáticas sim Não variável de classe acessível e métodos com auto:: $ this-> (Observe que o PHP> 5.3 permite o uso de $ this com variáveis ​​estáticas, use $ this :: $ foo. $ this-> foo ainda será indefinido se $ foo for uma var estática) Precisa de um objeto instanciado Não sim

self vs this em PHP - Exemplos

classe exampleClass public static $ foo; público $ bar; função pública regularFunction () echo $ this-> bar;  função estática pública staticFunction () echo self :: $ foo;  função estática pública anotherStatFn () self :: staticFunction ();  função pública regularFnUsingStaticVar () echo self :: $ foo;  // NOTA: A partir do PHP 5.3, é permitido usar $ this :: $ bar em vez de self :: $ bar exampleClass :: $ foo = "Hello"; $ obj = new exampleClass (); $ obj-> bar = "Mundo!"; exampleClass :: staticFunction (); / * imprime Hello * / $ obj-> regularFunction (); / * imprime Mundo! * / 

Funções estáticas podem usar apenas variáveis ​​estáticas. Funções e variáveis ​​estáticas são referenciadas via auto::functionName () ou auto::nome variável. No exemplo mostrado acima, variáveis ​​estáticas são referenciadas com o nome da classe (exampleClass :: $ foo) ou, com um auto:: (self :: $ foo) quando usado no método estático [chamado staticFunction ()] da classe.

Funções regulares e variáveis ​​de uma classe precisam que um contexto de objeto seja referenciado. Eles não podem existir sem um contexto de objeto. O contexto do objeto é fornecido por $ this. No exemplo acima, $ bar é uma variável regular e, portanto, é referenciada como $ obj-> bar (no contexto do objeto com a variável obj) ou como $ this-> bar (novamente em um contexto de objeto dentro do método de um objeto).

auto não usa um precedente $ Porque auto não conota uma variável, mas a classe se constrói. $ this faz referência a uma variável específica para que ela tenha um precedente $.

Referências

  • Palavra-chave estática - PHP.net