2010-01-19 5 views
5

Estoy usando la palabra clave 'this' durante mucho tiempo. Pero cuando alguien me pide que lo explique, estoy confundido sobre cómo explicarlo. Sé que puedo usar esto en un método de clase para acceder a cualquier variable y método de la misma clase.¿Cómo explicar 'este' palabra clave de la mejor manera y simple?

class MyClass{ 

     function MyMethod1(){ 
     echo "Hello World"; 
     } 

     function MyMethod2(){ 
     $this->MyMethod1(); 
     } 

    } 

¿Es un objeto de una clase que no necesitamos para inicializar y sólo se puede utilizar dentro de la clase o cualquier otra cosa. ¿Cómo explicar?

Gracias

+1

Después de un tiempo razonable, se acepta la respuesta con la mayoría de los votos. – NAVEED

+0

Aquí hay un buen artículo sobre esto ** [Usando la palabra clave "this" en PHP] (http://www.webdevelopmentbits.com/using-this-in-php) ** – rahul

Respuesta

13

Una clase es un molde para un objeto: especifica cómo se ve el objeto (variables) y qué puede hacer (funciones).

Si crea una clase: crea un objeto. Si crea la clase, puede usar "this" para referirse al objeto en sí mismo. Es por eso que no puede establecer el "esto" porque está relacionado con el objeto. Es una variable especial de solo lectura.

+5

Es una variable especial de solo lectura que se puede utilizar para referirse al objeto en sí. Es correcto ? – NAVEED

+0

Sí, es correcto. – Pindatjuh

5

this referencia a la instancia de objeto actual de una clase.

this es un parámetro implícitamente pasado a los métodos de una clase: tiene un alcance en un método y permite el acceso a todos los miembros del objeto.

+1

Probablemente no es lo suficientemente básico, pero esto es la respuesta más correcta técnicamente. –

2

corta: $this le da acceso a las variables de objeto (y métodos) Editar: dentro de la clase :) Edición 2: (pero no en los métodos estáticos de la clase): D

+3

dentro de la clase :) – NAVEED

+0

corregido;) thx mate – dfens

+0

pero no en métodos estáticos de la clase :)) – NAVEED

2

igual su nombre sugiere, los métodos de instancia operan en instancias de una clase. ¿Cómo saben en cuál operar? Para eso está el parámetro this.

Cuando invoca un método de instancia, está realmente invisiblemente transfiriendo un parámetro extra: el objeto para invocarlo. Por ejemplo, cuando se tiene lo siguiente:

class Basket { 
    public function a() { 
    $this-> ...; 
    // ... 
    } 
    // ... 
} 

y se llama a $some_basket->a(), detrás de las escenas en realidad estás llamando a algo así como Basket::a($some_basket). Ahora a() sabe con qué Basket desea trabajar. Ese parámetro especial es a lo que se refiere this: el objeto actual con el que se está tratando.

1

Una clase es una plantilla o un 'dado' para un objeto.

Permite usar el ejemplo clásico de 'bicicleta'. Hay muchas bicicletas huffy por ahí. Sin embargo, hemos creado una bicicleta, y podemos usar la palabra clave 'this' para referirnos a 'esta' bicicleta.

En un sentido más técnico, una clase es una plantilla para un objeto que se creará una instancia. En tiempo de ejecución, después de crear un instancia de un objeto, o crear una instancia de sí mismo, podemos usar la palabra clave 'this' internamente para referirnos a la instancia que ejecuta ese método.

2

Varias personas lo han explicado en términos similares, pero pensé que agregaría que cuando hablo con personas que no están familiarizadas con la programación orientada a objetos, explico que la definición de clase es el modelo, como para una casa, y "esto" la casa real con la que estás trabajando en ese momento. Puede haber otras casas que se vean exactamente iguales, pero este es el objeto específico (casa).

Cuestiones relacionadas