Magic functions

Whenever you see a function name start with a double-underscore, it is a "magic" function - one that PHP has provided that you have not declared yourself. PHP reserves all functions starting with __ as magic, which means while you can use them yourself, you may find that a later version of PHP uses them as a magic function, and causes conflict.

So far we've seen __sleep(), __wakeup(), __clone(), __construct(), and __destruct() - functions 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 are five more functions you should know about: __autoload(), __get(), __set(), __call(), and __toString().