Los nombres de funci贸n: __construct, __destruct (see Constructores y Destructores), __call, __get, __set, __isset, __unset (see Sobrecarga), __sleep, __wakeup, __toString, __clone y __autoload son m谩gicos en las clases de PHP. No puede tener funciones con esos nombres en cualquiera de sus clases a menos que se desee la funcionalidad m谩gica asociada con ellos.
| Atenci贸n |
PHP reserva todos los nombres de funciones que empiecen con __ como m谩gicas. Es recomendado que no use nombres de funciones con __ en PHP a menos que dese alguna m谩gica funcionalidad documentada. |
serialize() checa si su clase tiene una funci贸n con el nombre m谩gico __sleep. Si es as铆, esa funci贸n es ejecutada antes de cualquier serializaci贸n. Esta puede limpiar el objeto y se espera que regrese una matriz con los nombres de todas las variables de ese objeto que puede ser serializadas.
La intenci贸n de usar __sleep es cerrar cualquier conexi贸n a base de datos que el objeto pueda tener, terminar de enviar cualquier dato o ejecutar tareas similares de limpieza. Tambi茅n, la funci贸n es 煤til si tiene objetos muy grandes los cuales no necesitan mantenerse completos.
Inversamente, unserialize() checa por la presencia de una funci贸n con el nombre m谩gico __wakeup. Si est谩 presente, est谩 funci贸n puede reconstruir cualquier recurso que el objeto pueda tener.
La intenci贸n de __wakeup es reestablecer cualquier conexi贸n a base de datos que se pueda haber perdido durante la serializaci贸n y ejecutar otras tareas de reinicializaci贸n.
El m茅todo __toString permite a una clase decidir como actuar cuando es convertida en cadena.
No tiene otro valor que cuando el m茅todo __toString es llamado solo cuando es directamente combinado con echo() o print().
Ejemplo 19-27. Casos donde __toString es llamado
|