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.0 | callback тепер допускає значення 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() - Спроба завантажити невизначений клас