spl_autoload_register
(PHP 5 >= 5.1.0, PHP 7)
spl_autoload_register — Register given function as __autoload() implementation
Description
spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool
Register a function with the spl provided __autoload queue. If the queue is not yet activated it will be activated.
If your code has an existing __autoload() function then this function must be explicitly registered on the __autoload queue. This is because spl_autoload_register() will effectively replace the engine cache for the __autoload() function by either spl_autoload() or spl_autoload_call().
If there must be multiple autoload functions, spl_autoload_register() allows for this. It effectively creates a queue of autoload functions, and runs through each of them in the order they are defined. By contrast, __autoload() may only be defined once.
Parameters
-
autoload_function
-
The autoload function being registered. If no parameter is provided, then the default implementation of spl_autoload() will be registered.
-
throw
-
This parameter specifies whether spl_autoload_register() should throw exceptions when the
autoload_function
cannot be registered. -
prepend
-
If true, spl_autoload_register() will prepend the autoloader on the autoload queue instead of appending it.
Return Values
Returns true
on success or false
on failure.
Examples
Example #1 spl_autoload_register() as a replacement for an __autoload() function
<?php // function __autoload($class) { // include 'classes/' . $class . '.class.php'; // } function my_autoloader($class) { include 'classes/' . $class . '.class.php'; } spl_autoload_register('my_autoloader'); // Or, using an anonymous function as of PHP 5.3.0 spl_autoload_register(function ($class) { include 'classes/' . $class . '.class.php'; }); ?>
Example #2 spl_autoload_register() example where the class is not loaded
<?php namespace Foobar; class Foo { static public function test($name) { print '[['. $name .']]'; } } spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0 new InexistentClass; ?>
The above example will output something similar to:
[[Foobar\InexistentClass]] Fatal error: Class 'Foobar\InexistentClass' not found in ...
See Also
- __autoload() - Attempt to load undefined class
© 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/function.spl-autoload-register.php