Подкачка классов

Для расширения взможностей функции __autoload с версии 5,1 появилась новая функция, позволяющая загружать класы из разных каталогов

spl_autoload_register(null,false);

function libsLoader($classLib) {
    require("/libs/".$classLib.".php");
}
function baseLoader($classKernel) {
       	require($classLib.".php");
}

spl_autoload_register('libsLoader',false);
spl_autoload_register('baseLoader',false);

теперь если потребутеся загрузить класс то функция проверит его в базовом каталоге, а затем в каталоге библиотек

3 Responses to “Подкачка классов”

  1. solenko Says:

    Ну сосем не для того чтобы “из разных каталогов” загружать ее добавляли — это можно было делать и с помощью одной функции.

    Прелесть вся в том, что тепрь можно динамически, не переписывая код, влиять на __autoload. Т.е. каждый модуль может добавлять путь к своим либам в зависмости от того включен он или нет.

  2. larin Says:

    И плюс, ИМХО, у вас очепяточка:

    В статье написано: “…то функция проверит его в базовом каталоге, а затем в каталоге библиотек”, а код выглядит:

    spl_autoload_register(’libsLoader’,false);
    spl_autoload_register(’baseLoader’,false);

    Соответственно, вначале будет произведен поиск в libsLoader, а уж потом в базовом каталоге. Или я не прав?

  3. Smak Says:

    Ещё для динамического влияния на __autoload можно изменять include_path. функцией set_include_path() совместно с get_include_path()

Leave a Reply