Как использовать 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) и несколько соответствующих реализаций. Очевидный способ сделать это-использовать композитор.