Меня смутила одна вещь в автозагрузке php: функция spl_autoload()
. В каждом ответе я обнаружил, что эта функция является реализацией по умолчанию __autoload
. Разве PHP не должен сам определять реализацию __autoload()
по умолчанию, а затем, если я явно создам __autoload()
, он просто переопределит ее?
Если я явно не определю функцию __autoload()
в моем файле php, будет ли там реализация по умолчанию? Является ли spl_autoload()
какой-то внутренней функцией, если да, то почему она в php doc?
(Если это не внутренняя функция) В каждом примере spl_autoload() нет никакого вызова этой функции, только spl_autoload_register
без параметров, spl_autoload_extensions
и так далее. почему так? Что мне не хватает?
Цитата из: Что Автозагрузка; Как вы используете spl_autoload, __autoload и spl_autoload_register?
set_include_path(get_include_path().PATH_SEPARATOR.'path/to/my/directory/'); spl_autoload_extensions('.php, .inc'); spl_autoload_register();
Поскольку spl_autoload является стандартной реализацией магического метода __autoload(), PHP будет вызывать spl_autoload, когда вы пытаетесь создать экземпляр нового класса.
Значит, если я не позвоню spl_autoload_register()
, он не зарегистрирует реализацию по умолчанию? Просматривает ли spl_autoload
расширения, установленные spl_autoload_extensions();
, а затем импортирует все файлы с этими расширениями из включаемого пути? Повторяю вопрос, упомянутый ранее: является ли spl_autoload()
внутренней функцией?
Я знаю, что __autoload()
устарел, и мне следует использовать spl_autoload_register()
. Я просто хочу убедиться, что знаю, как все это работает.
Спасибо.
__autoload
- эта функция устарела. Используйтеspl_autoload_register
и используйте собственную функцию автозагрузки - person Philipp   schedule 28.04.2018