|
Автоматическая загрузка классовБольшинство разработчиков объектно-ориентированных приложений используют такое соглашение именования файлов, в котором каждый класс хранится в отдельно созданном для него файле. Одной из наиболее при этом досаждающих деталей является необходимость писать в начале каждого скрипта длинный список подгружаемых файлов. В PHP 5 это делать не обязательно. Можно определить функцию __autoload(), которая будет автоматически вызвана при использовании ранее неопределенного класса или интерфейса. Вызов этой функции - последний шанс для интерпретатора загрузить класс прежде, чем он закончит выполнение скрипта с ошибкой. Подсказка
spl_autoload_register() предоставляет более гибкую альтернативу для автоматической загрузки классов. По этой причине использовать __autoload() не рекомендуется, а сама функция в будущем может перестать поддерживаться или быть удалена.
Пример #1 Пример автоматической загрузки В этом примере функция пытается загрузить классы MyClass1 и MyClass2 из файлов MyClass1.php и MyClass2.php соответственно.
<?php Пример #2 Еще один пример автоматической загрузки В этом примере представлена попытка загрузки интерфейса ITest.
<?php Пример #3 Автоматическая загрузка с перехватом исключения в версиях 5.3.0+ В данном примере вызывается исключение и отлавливается блоком try/catch.
<?php Результат выполнения данного примера: Want to load NonLoadableClass. Unable to load NonLoadableClass. Пример #4 Автоматическая загрузка с перехватом исключения в версиях 5.3.0+ - Класс пользовательского исключения не подгружен В данном примере вызывается недоступное исключение.
<?php Результат выполнения данного примера: Want to load NonLoadableClass. Want to load MissingException. Fatal error: Class 'MissingException' not found in testMissingException.php on line 4 |
|