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 hace referencia a la instancia actual de una clase dentro de sus métodos. Te permite acceder a las propiedades del objeto actual y modificarlas.
A continuación se muestra un ejemplo de una clase con métodos que utiliza $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 referirse 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 que haga referencia a $myCar. Así es como el método sabe a qué propiedades del 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 añadiendo un método llamado displayInfo que use la palabra clave $this para imprimir el año, la marca y el modelo del automóvil con el formato:
"This car is a [year] [make] [model]"
car.php: Contiene la definición de la claseCar, donde añadirás el métododisplayInfodriver.php: Archivo principal de ejecución que importa y utiliza la claseCar(bloqueado)
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 la POO
Archivos externosIntroducción a la POOClases frente a objetosLa palabra clave $thisMétodosPropiedadesConstructor (__construct)Destructor (__destruct)Repaso: calculadora simple4Herencia
Herencia básicaLa palabra clave parent::Sobrescritura de métodosLa palabra clave finalClases abstractasRepaso - Jerarquía de empleados7Encapsulación
Público, protegido, privadoModificadores de acceso en profundidadGetters y settersOcultación de la informaciónPromoción del constructor (8.0)Repaso: sistema de registros de estudiantes10Conceptos avanzados de OOP
Composición vs. herenciaInyección de dependenciasClases anónimasEnums (PHP 8.1)Fibras (PHP 8.1)Análisis profundo de la clonación de objetosGeneradores e iteradores13Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón Repository2Namespaces y carga automática
Introducción a los NamespacesLa palabra clave useEstándar de carga automática PSR-4Autoloader de ComposerRepaso: proyecto organizado5Interfaces y contratos
Introducción a las interfacesImplementación de interfacesImplementación de múltiples interfacesInterfaces vs. clase abstractaTipado con interfacesRepaso - 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 __unserializeRepaso: 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)Repaso: gestor de cuentas bancarias6Polimorfismo
Repaso de la sobrescritura de métodosPolimorfismo mediante interfacesAnotaciones de tipo y tipos uniónEnlace estático tardíoRepaso: procesador de pagos9Traits
Introducción a los TraitsUso de múltiples TraitsResolución de conflictos entre TraitsMétodos abstractos en TraitsTraits frente a la herencia12Patrones de diseño, parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón StrategyPractica por tu cuenta: Compilador de PHP online