Los famosos métodos mágicos
Desde hace mucho tiempo escucho hablar sobre los famosos métodos de mágicos de PHP y la verdad sentía mucha curiosidad al respecto y comencé a investigar un poco acerca de esto 😁 y desde mi punto de vista lo mas importante a resaltar sobre estos métodos es lo siguiente;
¿Cómo identificamos un método mágico dentro de PHP? 🤔
Los métodos mágicos están identificados por el uso de dos guiones bajos “__” como prefijo.
¿Yo podría crear mi propio método mágico en PHP?
Pues no, todos los nombres de métodos que comienzan con “__” son reservados por PHP, de utilizarlos solo seria si deseas alguna funcionalidad ya documentada.
Ahora bien, es hora de que conozcamos los métodos mágicos de PHP
__construct()
Uno de los métodos mas utilizados al crear una clase en PHP es el __construct() este es llamado de manera inmediata al crear un objeto (no se puede llamar al método ya que es llamado automáticamente al crear el objeto), este método permite inyectar parámetros y/o dependencias para construir un objeto.
__destruct()
Así como existe un método mágico llamado ** __construct()** también existe el método mágico **destruct ** este método no es muy utilizado en la practica, al igual que podemos construir cosas cuando instanciamos un objeto, con este método podemos destruirlas cundo el se destruye.
**__call() **
El método **__call() ** es activado cuando se intenta llamar o invocar un método el cual no es accesible públicamente o bien es declarado como protected con la función __call() podemos acceder a ellos y opcionalmente pasarle parámetros con call_user_func_array().
__callStatic()
Si el método al que se quiere llamar es invocar es un método inaccesible en un contexto estático se puede emplear __callStatic(). Este método funciona de la misma forma que __call() pero la sintaxis con la que llamar a los métodos será como a los métodos estáticos.
**__get() **
Cuando trabajamos con objetos por lo general las propiedades del objeto son o deberían ser protected o private por lo cual son inaccesibles y no se puede acceder a ellas sin el estimado método mágico __get() que permite poder acceder a estas propiedades.
__set()
Si necesitas establecer una propiedad a cual no es accesible debemos insertar o asignar un valor mediante __set(), este método toma la propiedad a la cal intentas acceder y el valor que deseas establecer como dos argumentos.
__isset()
Con este método se puede verificar la existencia de un elemento dentro un array o la existencia de una propiedad public dentro de algún objeto si es definida, se lanza al llamar la función isset() o empty().
__unset()
Es invocado cuando se usa la función ** unset()** sobre alguna proiedad inaccesible o inexistente.
**__sleep() **
Antes que nada veamos el método serialize() este es guarda la representación o de un objeto, si guardamos un objeto en la base de datos, primero tendríamos que serializarlo, guardarlo, y después si lo quisiéramos de vuelta tendríamos que usar unserialize(). Por otro lado el método mágico __sleep() el uso para el que está destinado __sleep() consiste en confirmar datos pendientes o realizar tareas similares de limpieza. Además, el método es útil si tiene objetos muy grandes que no necesitan guardarse por completo.
__wakeup()
El uso para el que está destinado __wakeup() es restablecer las conexiones de base de datos que se puedan haber perdido durante la serialización y realizar otras tareas de reinicialización.
** __toString()**
El método __toString() permite devolver el objeto representado en forma de string.
**__invoke() **
El método mágico __invoke() permite usar un objeto como si fuera una función.
__clone()
Cuando se hace una copia de un objeto en PHP mediante su asignación a otra variable, ésta variable sigue haciendo referencia al mismo objeto. Esto significa que si cambias cualquier cosa un uno se cambiará en ambos dos, para crear una copia del objeto independiente una de otra se usa clone, Pero cuando tenemos objetos que están inyectados en el objeto, esas dependencias se pasarán como referencia.