Подтвердить что ты не робот

Php spl_autoload_register vs __autoload?

Привет, есть ли какая-либо разница, использующая это, за исключением того, что мы можем использовать собственное имя для автоматической загрузки? есть ли разница в производительности? как они работают внутри страны?

между

function __autoload_libraries($class){
    include_once 'lib.'.$class.'.php';
}

spl_autoload_register('__autoload_libraries');

против

function __autoload($class){
    include_once 'lib.'.$class.'.php';
}
4b9b3361

Ответ 1

__autoload обычно считается устаревшим. Это позволяет использовать только один автозагрузчик. Как правило, вы должны использовать __autoload, если используете версию PHP без поддержки spl_autload_register.

spl_autoload_register позволяет регистрировать несколько автозагрузчиков, которые будут выполняться поочередно, пока не будет найден и загружен соответствующий класс/интерфейс/признак, или пока все параметры автозагрузки не будут исчерпаны. Это означает, что если вы используете фрейм-код или другие сторонние библиотеки, которые реализуют свои собственные автозагрузчики, вам не нужно беспокоиться о том, что вы вызываете конфликты.

UPDATE:

__autoload теперь официально устарел от PHP 7.2.0, что означает теперь его на блоке прерывания. Если вы хотите, чтобы ваш код был совместим с будущими версиями PHP, вам определенно не следует использовать __autoload

Ответ 2

Документация для "Автозагрузка классов" гласит:

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

Документация для spl_autoload_register() гласит:

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