autoload автозагрузка класса php

Автозагрузка классов (функция __autoload)

Когда классов немного, можно подгружать их с помощью 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'); //разрегистрировать класс



Добавить комментарий

Ваш e-mail не будет опубликован.