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 ...

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.