__construct() is called when a new instance of the class is created.
__destroy() is called when an instance of the class passes out of memory (calling unset()).
__autoload() is called when you refer to a classfor the first time.
__clone() is called when you copy the object using the clone keyword.
__get() and __set() are called when you get or set an object property that is not defined.
__get() takes a single parameter, the name of the property;
__set() takes two parameters: the name of the property and the value.
__call() is called when you try to call an undefined method.
__call() takes two arguments: the method name that was used and an array containing any values that were passed to the method.
__sleep() and __wakeup: __sleep() is called when you try to serialize() an object.
__wakeup() is called when you unserialize() an object.
__toString() is called when a string representation of the object is required.