Menú

Juan Luis García Borrego

Programación, PHP, Symfony2, Silex y más cosillas.

Métodos mágicos PHP

Las clases PHP tiene una serie de nombres de métodos reservados llamados métodos “mágicos”. Se identifican por el prefijo “__”  y ninguna clase puede tener métodos con estos nombres a menos que se desee aplicar la funcionalidad mágica asociada a cada uno de ellos.

metodos mágicos PHP

metodos mágicos PHP

__construct()

El constructor se encarga de recibir datos para inicializar los objetos.

__call()

Se ejecuta cuando llamamos a un método que no existe. También existe el método __callStatic que funciona igual pero cuando llamamos a un método estático.

Un ejemplo real sería el utilizado por Doctrine ORM al utilizar los métodos findByNombrePropiedad o findOneByNombrePropiedad que realizan una consulta a BD con el método seleccionado aunque no exista dicha consulta en el repository.

__get()

Se ejecuta cuando llamamos a una propiedad que no exista o que sea privada.

__set()

Se ejecuta cuando añadimos un valor a una propiedad privada

__isset()

Se ejecuta cuando consultamos si existe una propiedad que no existe, es privada o protegida con la función isset() o empty()

__unset()

Se ejecuta cuando intentamos borrar una propiedad que no existe, es privada o protegida con la función unset()

__sleep() y __wakeup()

La serialización es un proceso que convierte un objeto a un string (utilizado para guardar objetos en BD por ejemplo). El método __sleep() invoca un objeto cuando utilizamos la función serialize(), es útil cuando solo queremos serializar algunas propiedades del objeto. El método __wakeup() se llama cuando aplicamos la función unserialize() sobre el objeto.

__toString()

Este método es llamado cuando se imprime el objeto por pantalla ( sin llamar a ninguna propiedad ni método), convierte el objeto en una cadena de texto.
Un ejemplo real sería el utilizado en el objeto QueryBuilder de Doctrine, al imprimir el objeto muestra la consulta DQL realizada

__invoke()

Este método permite llamar a un objeto PHP “como si fuera” una función.

__clone()

Se acciona cuando clonamos un objeto PHP con la función clone.

Recursos:

Comentarios

Another good example of usage of __construct is by making it private, this means that it can be created only internally using a static factory method like a create.
This gives more control on the creation and the initialization (setters, default parameters) of the instance.

For an example see: http://stackoverflow.com/a/26097/871913

Deja un comentario