Как мне выполнить автозагрузку классов композитора только после того, как прежней функции автозагрузки не удалось найти загружаемый класс?

0

Я беру на себя проект, который использует пользовательскую структуру. Встроенный, вы найдете наиболее часто используемую функцию автозагрузки PHP в мире:

function __autoload($class_name) {
    include APP_PATH . '/model/' . $class_name . '.php';
}

Теперь я хотел бы установить композитор. Как сделать, чтобы автозагрузить классы композитора только после того, как прежняя функция автозагрузки не смогла найти загружаемый класс?

Теги:
frameworks
composer-php

1 ответ

0
Лучший ответ

Оказывается, есть способ зарегистрировать функции автозагрузчика как стек функций, которые будут вызываться до тех пор, пока не удастся добиться успеха. Последний параметр добавляет функцию автозагрузчика в текущий стек.

spl_autoload_register('app_autoload', false, true);

Но для того, чтобы быть уложенным, необходимо, конечно, не использовать магический синтаксис (__autoload()), а также быть признанным " __autoload() ", функция не должна включать файл. Поэтому я немного изменил исходную функцию:

function app_autoload($class_name) {
    $file = APP_PATH . '/model/' . $class_name . '.php';
    if (file_exists($file)) {
        include $file;
    }
    return false;
}

И это работало как прелесть.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню