Основы
Конструкторы и деструкторы
Классы и объекты (PHP 5)
PHP Manual

## Автоматическая загрузка объектов

Большинство разработчиков объектно-ориентированных приложений создают для каждого определения класса отдельный файл с кодом PHP. Одной из самых больших неприятностей в этом случае является необходимость писать в начале каждого скрипта длинный список подгружаемых файлов.

Если используется PHP 5, то делать это не обязательно. Вы можете определить функцию __autoload, которая автоматически вызывается в том случае, когда вы пытаетесь использовать класс/интерфейс, который не был определен ранее. Вызов этой функции - это последний шанс для интерпретатора загрузить класс прежде, чем он закончит выполнение скрипта с ошибкой.

> Замечание: Исключения, вызванные в функции __autoload, не могут быть перехвачены в блоке catch и завершатся с неисправимой ошибкой.

> Замечание: Автоматическая загрузка не доступна в случае использования PHP в командной строке в интерактивном режиме.

> Замечание: Если имя класса используется, например, для вызова через call_user_func(), то оно может содержать некоторые опасные символы, такие как ../. Поэтому, рекомендуется не использовать данные от пользователей в таких функциях или же, как минимум, проверять значения в __autoload().

Пример #1 Пример автоматической загрузки

В этом примере функция пытается загрузить классы MyClass1 и MyClass2 из файлов MyClass1.php и MyClass2.php соответственно.

`<?php
function __autoload($class_name) {
require_once $class_name . '.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();
?>`

В этом примере представлена попытка загрузки интерфейса ITest.

`<?php
function __autoload($name) {
var_dump($name);
}
class Foo implements ITest {
}
/*
string(5) "ITest"
Fatal error: Interface 'ITest' not found in ...
*/
?>`

Основы
Конструкторы и деструкторы
Классы и объекты (PHP 5)
PHP Manual