spl_autoload_register

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

spl_autoload_register - Реєструє задану функцію як реалізацію методу __autoload()

Опис

spl_autoload_register(?callable $callback = null, bool $throw = true, bool $prepend = false): bool

Реєструє функцію __autoload у наданій SPL черзі. В результаті чергу буде активовано, навіть якщо раніше її було вимкнено.

Если в вашем скрипте реализована функция__autoload(), її необхідно явно зареєструвати у черзі __autoload. Це потрібно, т.к . **spl_autoload_register()**полностью заменяет механизм кеширования__autoload()функциямиspl_autoload() і spl_autoload_call()

spl_autoload_register() дозволяє задати кілька реалізацій методу автозавантаження. Вона створює чергу з функцій автозавантаження як їх визначення у скрипті, тоді як вбудована функція __autoload() може мати лише одну реалізацію.

Список параметрів

callback

Имя функции, реализующей методspl_autoload(). Якщо null, буде зареєстровано реалізацію за замовчуванням.

callback(string $class): void

throw

Цей параметр визначає, чи має spl_autoload_register() викидати виняток, якщо зареєструвати callback виявилося неможливим.

Увага

Починаючи з PHP 8.0.0, цей параметр ігнорується, а при установці значення false буде видано повідомлення. Функція spl_autoload_register() тепер завжди викидатиме виняток TypeError у разі передачі некоректних аргументів.

prepend

Якщо передано значення true, **spl_autoload_register()**поместит указанную функцию в начало очереди вместо добавления в конец.

Значення, що повертаються

Повертає true у разі успішного виконання або **false**в случае возникновения ошибки.

список змін

ВерсияОпис
8.0.0callback тепер допускає значення null.

Приклади

Приклад #1spl_autoload_register()** як альтернатива функції __autoload()**

Loading...

Приклад #2 Приклад використання spl_autoload_register()** у випадку, якщо клас не завантажився**

Loading...

Висновок наведеного прикладу буде схожим на:

[[Foobar\InexistentClass]]
Fatal error: Class 'Foobar\InexistentClass' not found in ...

Приклад #3 Ідентифікатор буде надано без провідного зворотного сліша

Loading...

Результат виконання наведеного прикладу:

string(12) "RelativeName"
string(26) "RelativeName\WithNamespace"
string(12) "AbsoluteName"
string(26) "AbsoluteName\WithNamespace"

Дивіться також

  • __autoload() - Спроба завантажити невизначений клас