Los métodos que inician con “__” son llamados métodos mágicos en PHP y permiten realizar acciones sobre objetos cuando suceden determinados eventos. Los nombres que tienen estos métodos son reservados.
Los principales métodos mágicos son:
1. construct() y destruct() : De este par, el método construct() es el más utilizado, ya que permite inyectar parámetros o dependencias al objeto al momento de ser creado. El método destruct() ejecuta una determinada acción antes que el objeto se destruya.
2. __get() y __set() : Son métodos usados para obtener y escribir sobre el objeto. Su uso es adecuado pero no facilita el mantenimiento de código. Lo más adecuado es usar getters y setters.
3. __isset() y __unset() : Es posible obtener información de las propiedades de los objetos aún así estos sean_ private o protected_ y es posible eliminar propiedades, respectivamente.
4. __toString() : Permite devolver el objeto en forma de cadena. Devuelve lo que esté definido dentro del método.
5. __sleep() y __wakeup : Útiles al momento de almacenar o recuperar objetos de las bases de datos de forma serializada.
6. call() y callStatic : Usados para acceder a métodos no públicos.
7. __clone() : Utilizado para crear copias del objeto que sean independientes.
8. __invoke() : Permite usar un objeto a manera de una función.
Estos métodos son muy útiles, y es recomendable conocer sus finalidades para lograr mayores funcionales con nuestro código.