Как использовать spl autoload () как autoload () становится устаревшим

согласно http://php.net/manual/en/language.oop5.autoload.php функция magic _ _ autoload () станет устаревшей и удаленной (!) в будущих версиях PHP. Официальной альтернативой является spl_autoload(). См.http://www.php.net/manual/en/function.spl-autoload.php. Но руководство php не объясняет правильного использования этого ребенка.

мой вопрос :Как заменить это (мой автоматический класс autoloader)

function __autoload($class) {
    include 'classes/' . $class . '.class.php';
}

С версией с spl_autoload() ? проблема: я не могу понять, как дать этой функции путь (он принимает только пространства имен).

кстати: есть много тем, касающихся этой темы здесь на SO.com, но никто не дает чистого и простого решения, которое заменяет мой сексуальный однострочный.

1 ответов


вам нужно зарегистрировать функции автозапуска с spl_autoload_register. Вы должны предоставить "отзывной". Самый лучший способ сделать это, начиная с 5.3, - это анонимная функция:

spl_autoload_register(function($class) {
    include 'classes/' . $class . '.class.php';
});

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


2018 обновление к этому: на самом деле не должно быть так много случаев, когда вы нужно чтобы свернуть свой собственный загрузчик. Существует широко принятый стандарт (называемый PSR-4) и несколько соответствующих реализаций. Очевидный способ сделать это-использовать композитор.