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 ...
Get PHP in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.