Sobes.tech
Junior

¿Qué métodos mágicos de la clase conoces?

sobes.tech AI

Respuesta de la IA

En PHP, existen una serie de métodos especiales llamados "mágicos". Se llaman automáticamente en ciertas acciones con objetos de clase. Aquí algunos de ellos:

  • __construct(): Se llama al crear una nueva instancia de la clase. Se usa para inicializar el objeto.
  • __destruct(): Se llama al destruir el objeto (por ejemplo, al finalizar la ejecución del script o al llamar explícitamente a unset()). Se usa para liberar recursos.
  • __call($name, $arguments): Se llama al intentar invocar un método del objeto que no es accesible (no visible en el contexto actual). $name es el nombre del método llamado, $arguments es un array con sus argumentos.
  • __callStatic($name, $arguments): Similar a __call(), pero se invoca al intentar llamar a un método estático no accesible.
  • __get($name): Se llama al intentar leer una propiedad del objeto que no es accesible. $name es el nombre de la propiedad.
  • __set($name, $value): Se llama al intentar asignar a una propiedad no accesible. $name es el nombre de la propiedad, $value el valor asignado.
  • __isset($name): Se llama al verificar si una propiedad no accesible existe usando isset() o empty(). $name es el nombre de la propiedad.
  • __unset($name): Se llama al intentar eliminar una propiedad no accesible usando unset(). $name es el nombre de la propiedad.
  • __sleep(): Se llama antes de serializar el objeto con serialize(). Debe devolver un array con los nombres de las propiedades a serializar.
  • __wakeup(): Se llama justo después de deserializar el objeto con unserialize(). Puede usarse para restaurar conexiones o recursos.
  • __toString(): Se llama al intentar convertir el objeto a una cadena (por ejemplo, al usar echo). Debe devolver una representación en cadena del objeto.
  • __invoke(...$args): Se llama al intentar usar el objeto como una función.
  • __set_state(array $properties): Se llama al restaurar un objeto con var_export(). Recibe un array de propiedades exportadas por var_export().
  • __clone(): Se llama al clonar un objeto con clone. Se usa para realizar copias profundas (por ejemplo, objetos dentro de un objeto).

Es importante usar estos métodos con precaución, ya que un uso incorrecto puede llevar a comportamientos impredecibles del código.