
Introducción
$this es una de las cosas más importantes y más útiles de la POO en PHP (Object Oriented Programming). Y, por desgracia, es una de las que más se descuidan. Mucha gente ha oído hablar de esta palabra clave, pero no sabe cómo usarla.
En este artículo te explico brevemente qué es $this y cómo funciona. Si no tienes ninguna noción de POO, te recomiendo mirar antes de qué se trata para entender mejor lo que viene a continuación.
¿Qué es $this y cómo funciona?
La palabra clave $this nos permite usar los métodos y las propiedades de nuestra clase. Es decir, podemos llamar a un método o a una propiedad desde dentro de la propia clase.
Como ejemplo, empecemos por crear una clase sencilla llamada Dog. La usaremos en los siguientes ejemplos del artículo.
class Dog {
public $name;
public $age;
}
Así, para acceder a la propiedad de nuestra clase, tenemos que usar $this tal y como se muestra a continuación:
$this->name
El ejemplo anterior muestra simplemente cómo usar bien la palabra clave. Fíjate en que hay que quitar el $: la propiedad $name se escribe $this->name. Es esencial que lo recuerdes, porque si no corres el riesgo de no entender por qué tu código no se ejecuta correctamente.
La palabra clave $this y los métodos
Usemos ahora $this dentro de un método de nuestra clase:
class Dog {
public $name;
public $age;
public function intro(){
echo 'Voici ' .$this -> name . ' et il a ' .$this -> age . 'ans.';
}
}
Para que nuestra función se ejecute, tenemos que crear nosotros mismos un objeto de la clase y definir los valores de sus propiedades, y luego llamar al método público:
<?php
// Instanciar
$blacky = new Dog();
// Añadir la propiedad name
$blacky->name = 'Toffee';
// Añadir la propiedad age
$blacky->age = '2 months';
Y, por último, tenemos que llamar a nuestra función.
echo $blacky->intro();
Lo que acabamos de hacer es meter las propiedades de la clase dentro de nuestra función. La salida será algo así:
C’est Toffee et il a 2 mois.
También podemos llamar a un método desde otro método de la misma clase escribiendo $this seguido de ->. Aquí tienes un ejemplo rápido, para el que vamos a usar una clase nueva.
class Man{
public $name;
public function say(){
echo 'Bonjour ' . $this->name;
}
public function hello(){
$this->say;
}
}
Ahora vamos a crear nuestro objeto, definir los valores y devolver la función.
// Instanciar el objeto
$john = new Man();
// Añadir el nombre
$john->name ='john';
// Llamar al método hello()
echo $john->hello();
El resultado debería ser
Bonjour John
Así es como se usa $this dentro de un método para llamar a otro método de esa misma clase.
Conclusión
Como ves en conjunto, resulta bastante práctico. Claro que hace falta algo de tiempo para acostumbrarse a ponerlo en tu código, pero en cuanto le pilles el truco lo usarás 24 horas al día, 7 días a la semana.


