spl_autoload_functions
spl_autoload_unregister
SPL Functions
PHP Manual

# spl_autoload_register

Register given function as __autoload() implementation

### Description

bool spl_autoload_register ([ callable `$autoload_function` [, bool `$throw` = true [, bool `$prepend` = false ]]] )

Register a function with the spl provided __autoload stack. If the stack 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 stack. 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 stack instead of appending it.

### Return Values

Returns `TRUE` on success or `FALSE` on failure.

### Changelog

Version | Description
--- | ---
5.3.0 | Namespaces support was introduced.
5.3.0 | The `prepend` parameter was added.

### 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