Как разрешить автозагрузку пользовательских библиотек в CakePHP? - PullRequest
3 голосов
/ 22 августа 2011

Привет! Я использую CakePHP, и есть несколько файлов Vendor, которые мне нужно добавить в автозагрузку.Это правильный метод:

В файле bootstrap.php у меня есть следующий код:

function __autoload($className){

        $classFile = '../vendors/phprtf/' . str_replace('_', '/', $className) . '.php';

        // check if file exists
         if(file_exists($classFile)) {
            require $classFile;
        }

}

PHPRTFLite имеет много файлов классов в различных подкаталогах.Таким образом, перечисление всех из них не является хорошим вариантом.

Кажется, сейчас это работает.

1 Ответ

4 голосов
/ 22 августа 2011

Вы должны использовать spl_autoload_register() для гибкости, которую он предлагает.

Если ваш код имеет существующую функцию __autoload, то эта функция должен быть явно зарегистрирован в стеке __autoload. Это потому что spl_autoload_register() эффективно заменит кеш двигателя для __autoload функция либо spl_autoload(), либо spl_autoload_call().

Если должно быть несколько функций автозагрузки, spl_autoload_register() позволяет это. Это эффективно создает очередь функций автозагрузки, и проходит через каждого из них в порядке их определения. От напротив, __autoload() может быть определен только один раз.

...