Magic Methods
Whenever you see a method name start with a double underscore, it is a "magic" method—one that PHP has provided that you have not declared yourself. PHP reserves all methods starting with _ _ as magic, which means although you can use them yourself, you may find that a later version of PHP uses them as a magic method and causes conflict.
So far, we've seen the following: _ _sleep(), _ _wakeup(), _ _clone(), _ _construct(), and _ _destruct()—methods that give you special control over your objects that you would not otherwise be able to have. In order to have a full understanding of OOP
in PHP there several more you should know: _ _autoload(), _ _get(), _ _set(), _ _call(), and _ _toString().
_ _autoload()
This global function is called whenever you try to create an object of a class that hasn't been defined. It takes just one parameter, which is the name of the class you have not defined. If you try to construct an object of a class that PHP does not recognize, PHP will run this function, then try to re-create the object and give you a second chance to load the right class.
As a result, you can write scripts like this:
function _ _autoload($Class) {
print "Bar class name: $Class!\n";
include "barclass.php";
}
$foo = new Bar;
$foo->wombat();Here we try and create a new object of type Bar, but it doesn't exist. Therefore, the _ _autoload() function is called, with "Bar" being passed in as its first parameter. This then include()s the file barclass.php, which contains the ...