(PHP 5 >= 5.1.0, PHP 7)

spl_autoload_registerRegister given function as __autoload() implementation


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.



The autoload function being registered. If no parameter is provided, then the default implementation of spl_autoload() will be registered.


This parameter specifies whether spl_autoload_register() should throw exceptions when the autoload_function cannot be registered.


If true, spl_autoload_register() will prepend the autoloader on the autoload queue instead of appending it.

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.

Sürüm Bilgisi

Sürüm: Açıklama
5.3.0 Namespaces support was introduced.
5.3.0 The prepend parameter was added.


Örnek 1 spl_autoload_register() as a replacement for an __autoload() function


// function __autoload($class) {
//     include 'classes/' . $class . '.class.php';
// }

function my_autoloader($class) {
'classes/' $class '.class.php';


// Or, using an anonymous function as of PHP 5.3.0
spl_autoload_register(function ($class) {
'classes/' $class '.class.php';


Örnek 2 spl_autoload_register() example where the class is not loaded


namespace Foobar;

Foo {
    static public function 
test($name) {
'[['$name .']]';

spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0

new InexistentClass;


Yukarıdaki örnek şuna benzer bir çıktı üretir:

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

Ayrıca Bakınız