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

Multiple spl_autoload_register

что есть/является преимуществом (-ами) наличия нескольких spl_autoload_register

Пример:

spl_autoload_register('autoload_systems');
spl_autoload_register('autoload_thirdparties');
spl_autoload_register('autoload_services');

против

используя один

spl_autoload_register('autoload'); или __autoload();

а затем выполните логику внутри функции.

eg:
$ftp = new systems_ftp();
$services = new services_cron_email();
4b9b3361

Ответ 1

Если у вас есть __autoload(), и вы включаете стороннюю библиотеку, в которой она также была, это было бы скроено.

Регистрация нескольких автозагрузок с помощью spl_autoload_register() гарантирует, что ваш код может упасть с помощью существующего кода (подумайте об библиотеках и т.д.), без сбивания или затенения существующих/будущих автозагрузок.

Кроме того, руководство пользователя PHP...

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

Ответ 2

Не думаю, что вам нужно добавить несколько, но в свою логику. способ, которым работает spl_autoload_register, является удивительным. suppone one имеют 3-х сторонние директивы и которые обычно управляются через пространство имен, которое также представляет их путь. рассмотрите этот простой класс как класс автозагрузчика

класс MyAutoLoader {

public function __construct()
{
    spl_autoload_register( array($this, 'load') );
}




function load( $class )
{

    $filepath = 'classes/'.$class.'.php';
    require_once( $filepath);

}

}

то в файл индекса включите этот файл загрузчика и создайте экземпляр этого класса

$autoload = new MyAutoLoader();

теперь u может напрямую создавать экземпляры классов предположим, что у нас есть класс Person в классах каталога \QMS\SERVICES\Person.php ', а тот же путь - это пространство имен этого класса

$person = новая СМК\УСЛУГИ\Person();

теперь, когда вы будете использовать новый, он проверяет, существует ли этот класс, а значение в виде строки будет передано функции load для класса MyAutoLoader. и там он будет включен. или вы можете изменить функцию "load", чтобы исправить путь к файлам классов ur, чтобы установить ur, если условия или что-то еще нужно сделать, чтобы исправить пути.