Много разработчици на обектно-ориентирани приложения създават по един PHP файл за всеки клас. Едно от най-досадните неща е създаването на дълъг списък на файловете за включване в началото на всеки скрипт (по един за всеки клас).
В PHP 5 това вече не е необходимо. Можете да дефинирате функция __autoload, която се извиква автоматично, в случай че се опитате да използвате клас/интерфейс, който все още не е дефиниран. Извикването на тази функция е последната възможност на скриптовата машина да зареди този клас преди да бъде генерирана фатална грешка.
Забележка: Изключения, хвърлени от функцията __autoload, не могат да бъдат хванати в блока catch, в следствие на което се генерира фатална грешка.
Забележка: Автоматичното зареждане не е достъпно при използване на PHP в интерактивен режим CLI.
Забележка: Ако се използва име на клас като например при call_user_func(), то може да съдържа някои опасни знаци като ../. Препоръчително е да не използвате данни предоставени от потребителя в такива функции или поне да го проверявате във функцията __autoload().
Example #1 Пример за автоматично зареждане
В този пример се прави опит да се заредят класовете MyClass1 и MyClass2 от файловете MyClass1.php и съответно - MyClass2.php.
<?php
function __autoload($class_name) {
require_once $class_name . '.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();
?>
Example #2 Друг пример за автоматично зареждане
В този пример се прави опит за зареждане на интерфейс ITest.
<?php
function __autoload($name) {
var_dump($name);
}
class Foo implements ITest {
}
/*
string(5) "ITest"
Fatal error: Interface 'ITest' not found in ...
*/
?>