Al aprender el lenguaje interpretado PHP, los programadores web novatos se encuentran con un concepto como la pseudovariable $ this. Su propósito y reglas de uso en el código son muy diferentes de todas las demás variables, por lo que vale la pena abordar este tema en detalle.
Clases y objetos
La programación orientada a objetos (OOP), que se ha utilizado en PHP desde la versión 5, proporciona al programador la capacidad de crear cualquier número de instancias de la misma clase, llamadas objetos; en este caso, cada copia creada recibe su propio nombre. Un objeto puede tomar datos llamados argumentos, procesarlos con funciones y devolver un resultado. Cualquier función de una clase puede acceder a sus propiedades no directamente, sino solo a través de la construcción objeto-> propiedad, por lo que surge la pregunta: ¿cómo escribir un código tan universal que permita que cualquier objeto generado funcione con datos, independientemente de su nombre? Considere el ejemplo que se muestra en la Figura 1.
Este código declara una clase que tiene una variable (propiedad) y dos funciones (métodos), una de las cuales es un constructor, es decir se inicia automáticamente cuando se crea un nuevo objeto. El trabajo de la función constructora es asignar los datos a la propiedad que recibe el argumento cuando se crea el objeto. El método, cuando se llama, devuelve el valor de la propiedad.
A continuación, considere las líneas 12 y 13. En ellas, se crean dos nuevas instancias de la clase, una de las cuales recibe el número 5 como argumento y la otra - 7. Estos valores son asignados por la función constructora a una variable (propiedad) que es accesible solo dentro de la clase. Cada objeto creado se asigna a variables y en consecuencia (más precisamente, estas variables reciben solo referencias a los objetos especificados, pero esto no importa en este momento). Ahora puede obtener los valores de propiedad con una simple llamada al método (líneas 15 y 16).
Asignar la pseudovariable $ this
Tenga en cuenta: tenemos dos objetos diferentes con exactamente los mismos métodos.
Y aquí es donde la pseudovariable viene al rescate. Su nombre se puede traducir del inglés como "this", es decir indica (es un enlace) al objeto en el que se encuentra. Como resultado, la línea 5 para se puede leer como "asignar el valor de un argumento a una propiedad de objeto", la línea 8 - "devolver el valor de una propiedad de objeto". Porque, la variable tomará automáticamente el valor apropiado.