Когда классов немного, можно подгружать их с помощью include/require, но если классов становится очень много, на помощь приходит функция __autoload (). Синтаксис функции:
function __autoload ($class_name){ require_once ($class_name.'.inc'); } $obj = new myClass(); //вызов autoload для myClass
Есть также несколько полезных функций при работе с autoload. Рассмотрим на примере:
spl_autoload_extensions('.php'); //загрузка файла с расширением .php spl_autoload_register(); //пустые скобки, значит надо использовать стандартную функцию autoload $obj = new SomeObject(); //отработает SomeObject (если его прописали в отдельной файле)
Другой пример:
function myAuto1(){ echo __FUNCTION__;} function myAuto2(){ echo __FUNCTION__;} spl_autoload_extension('.php'); spl_autoload_register ('myAuto1'); spl_autoload_register ('myAuto2'); $obj = new SomeObject();
В этом случае отработают только две функции, а SomeObject — нет (выскочит ошибка, что он не найден). Как только в скобках мы прописали название функций (строки №6,7), перестал работать стандартный autoload.
Есть несколько вспомогательных функций:
spl_autoload_register (array('class', 'method')); //массив - класс, метод spl_autoload_call ('className'); //принудительно вызвать класс print_r (spl_autoload_functions()); //выведет список всех зарегистрированных autoload spl_autoload_unregister ('className'); //разрегистрировать класс