2010-11-08 24 views
10

Duplicar posible:
PHP: self vs this

Hola, Podría ayudarme a entender el significado de la PHP nombre de la variable $this?

Gracias por su ayuda.

+2

Posible duplicado: http://stackoverflow.com/questions/151969/php-self-vs-this. Además, por favor no seas demasiado lindo en las preguntas. ;) – birryree

+2

¡Enhorabuena por ampliar su conocimiento a la edad de 12 años! Pero como eso no es relevante para la pregunta, ¿podrías editar la pregunta para eliminarla? –

+0

Parece que las personas en Stack Overflow no saben a qué 'tengo 12 años y a qué se refiere esto'. – JAL

Respuesta

16

$this se refiere a la clase que se encuentra.

Por ejemplo

Class Car { 

    function test() { 
     return "Test function called"; 
    } 

    function another_test() { 
     echo $this->test(); // This will echo "Test function called"; 
    } 
} 

Espero que esto ayude.

+0

Es una forma de referenciarse a sí mismo ... o llamar a métodos o leyendo variables de sí mismo. – jodm

+5

en realidad, self se refiere a la clase actual en la que se encuentra. $ This se refiere a la instancia de objeto actual de la clase en la que se encuentra. –

+0

No 'echo' Test funcionó llamado "' ya que está accediendo al 'test' variable miembro (que no existe) en oposición al método 'test()'. Tendría que cambiarlo a 'echo $ this-> test()' ... – ircmaxell

1

$this es una variable protegida que se utiliza dentro de un objeto, $this le permite acceder a un archivo de clase internamente.

Ejemplo

Class Xela 
{ 
    var age; //Point 1 

    public function __construct($age) 
    { 
     $this->setAge($age); //setAge is called by $this internally so the private method will be run 
    } 

    private function setAge($age) 
    { 
     $this->age = $age; //$this->age is the variable set at point 1 
    } 
} 

Es básicamente un problema de alcance variable $this sólo se permite dentro de un objeto que se ha iniciado y se refiere a ese objeto y sus padres sólo, puede ejecutar métodos privados y establecer las variables privadas donde como fuera del alcance no puedes.

también la palabra clave self es muy similar, aparte de que se refiere a los métodos estáticos dentro clase, estática, básicamente, significa que no se puede utilizar $this ya que no es un objeto, sin embargo, debe utilizar self::setAge(); y si eso setAge método se declara estático entonces no se puede llamar desde un instante de ese objeto/object

Algunos enlaces para que usted pueda empezar:

+0

Aunque entiendo que está explicando a un principiante de OOP, no se refiera a los objetos como clases. $ esto se usa para referirse a propiedades y métodos de objeto, mientras que self :: se usa para referirse a propiedades y métodos de clase. Creo que es importante explicar la diferencia entre los dos. – Craige