La palabra clave $this
Parte de la sección Programación Orientada a Objetos del Journey de PHP de Coddy — lección 4 de 91.
La palabra clave $this se refiere a la instancia actual de una clase dentro de sus métodos. Le permite acceder y modificar las propiedades del objeto actual.
Aquí hay un ejemplo de una clase con métodos que usan $this:
<?php
class Car {
public $color;
public $model;
public function honk() {
echo "Beep beep!\n";
}
public function describe() {
echo "I am a " . $this->color . " " . $this->model . "\n";
}
}La palabra clave $this se utiliza dentro de los métodos para hacer referencia al objeto que llamó al método.
Crea un objeto car y establece sus propiedades:
$myCar = new Car();
$myCar->color = "Red";
$myCar->model = "Sedan";Ahora llama a los métodos:
$myCar->honk();
$myCar->describe();Salida:
Beep beep!
I am a Red SedanCuando llamas a $myCar->describe(), PHP establece automáticamente $this para referirse a $myCar. Así es como el método sabe a qué propiedades de objeto acceder.
Si tuvieras otro objeto car:
$otherCar = new Car();
$otherCar->color = "Blue";
$otherCar->model = "SUV";
$otherCar->describe(); // Soy un Blue SUVPunto clave: $this siempre se refiere al objeto específico que llamó al método. Cada objeto obtiene su propio contexto cuando se ejecuta un método.
Desafío
FácilCompleta la clase Car en car.php agregando un método llamado displayInfo que utilice la palabra clave $this para imprimir el año, la marca y el modelo del coche en el formato:
"This car is a [year] [make] [model]"
car.php: Contiene la definición de la claseCardonde agregarás el métododisplayInfodriver.php: Archivo de ejecución principal que importa y utiliza la claseCar(bloqueado)
Hoja de referencia
La palabra clave $this se refiere a la instancia actual de una clase dentro de sus métodos, permitiéndote acceder y modificar las propiedades del objeto actual.
Usando $this en una clase:
<?php
class Car {
public $color;
public $model;
public function describe() {
echo "I am a " . $this->color . " " . $this->model . "\n";
}
}Creando un objeto y llamando a métodos:
$myCar = new Car();
$myCar->color = "Red";
$myCar->model = "Sedan";
$myCar->describe(); // Soy un Sedan RojoCuando llamas a $myCar->describe(), PHP establece automáticamente $this para referirse a $myCar. Cada objeto obtiene su propio contexto cuando se ejecuta un método, por lo que $this siempre se refiere al objeto específico que llamó al método.
Pruébalo tú mismo
<?php
require_once 'car.php';
$myCar = new Car();
$myCar->year = 2020;
$myCar->make = "Toyota";
$myCar->model = "Corolla";
$myCar->displayInfo();
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de OOP
Archivos externosIntroducción a OOPClases vs ObjetosLa palabra clave $thisMétodosPropiedadesConstructor (__construct)Destructor (__destruct)Resumen - Calculadora simple4Herencia
Herencia básicaLa palabra clave parent::Sobrescritura de métodosLa palabra clave finalClases abstractasResumen - Jerarquía de empleados7Encapsulamiento
Público, Protegido, PrivadoModificadores de acceso a fondoGetters y SettersOcultamiento de informaciónPromoción de constructor (8.0)Resumen - Sistema de registros de estudiantes10Conceptos avanzados de POO
Composición vs. HerenciaInyección de dependenciasClases anónimasEnums (PHP 8.1)Fibers (PHP 8.1)Clonación de objetos a fondoGeneradores e Iteradores13Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón Repository2Espacios de nombres y Autoloading
Introducción a los espacios de nombresLa palabra clave useEstándar de Autoloading PSR-4Autoloader de ComposerResumen - Proyecto organizado5Interfaces y Contratos
Introducción a las InterfacesImplementación de InterfacesImplementación de Múltiples InterfacesInterfaz vs Clase AbstractaType Hinting con InterfacesResumen - Calculadora de Formas8Métodos mágicos
Introducción a los métodos mágicos__toString y __debugInfo__get, __set, __isset, __unset__call y __callStatic__clone y clonación de objetos__serialize y __unserializeResumen - Colección personalizada3Propiedades de clase
Propiedades de instancia vs. estáticasConstantes en clasesMétodos y propiedades estáticosPropiedades privadas y protegidasPropiedades de solo lectura (PHP 8.1)Resumen - Gestor de cuenta bancaria6Polimorfismo
Sobrescritura de métodos revisadaPolimorfismo mediante interfacesType Hinting y tipos de uniónEnlace estático tardíoResumen - Procesador de pagos9Traits
Introducción a los TraitsUso de múltiples TraitsResolución de conflictos de TraitsMétodos abstractos en TraitsTraits frente a herencia12Patrones de diseño Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy