# spl_autoload_register

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

spl_autoload_register — Registrar las funciones dadas como implementación de __autoload()

### Descripción

spl_autoload_register(callable `$autoload_function` = ?, bool `$throw` = `true`, bool `$prepend` = `false`): bool

Registra una función con la cola de __autoload proporcionada por spl. Si la cola aún no ha sido activa, será activada.

Si el código contiene una función __autoload() existente, dicha función debe estar explícitamente registrada en la cola de __autoload. Esto es debido a que spl_autoload_register() de hecho reemplazará la caché del motor para la función __autoload() mediante spl_autoload() o spl_autoload_call().

Si deben haber varias funciones de autocarga, spl_autoload_register() lo permite. De hecho, crea una cola de funciones de autocarga y las recorre en el orden en que fueron definidas. Por el contrario, __autoload() sólo puede definirse una vez.

### Parámetros

`autoload_function`

  La función de autocarga a registrar. Si no se proporciona ningún parámetro, será registrada la implementación predeterminada de spl_autoload().

`throw`

  Este parámetro especifica si spl_autoload_register() debería lanzar excepciones cuando el parámetro `autoload_function` no puede ser registrado.

`prepend`

  Si es `true`, spl_autoload_register() antepondrá el autocargador en la pila de autocarga en vez de posponerlo.

### Valores devueltos

Devuelve `true` en caso de éxito o `false` en caso de error.

### Historial de cambios

Versión | Descripción
--- | ---
5.3.0 | Se introdujo el soporte para espacios de nombres.
5.3.0 | Se añadio el parámetro `prepend`.

### Ejemplos

Ejemplo #1 spl_autoload_register() como sustituto de una función __autoload()

`<?php
// function __autoload($clase) {
// include 'clases/' . $clase . '.clase.php';
// }
function mi_autocargador($clase) {
include 'clases/' . $clase . '.clase.php';
}
spl_autoload_register('mi_autocargador');
// O, utilizar una función anónima, a partir de PHP 5.3.0
spl_autoload_register(function ($clase) {
include 'clases/' . $clase . '.clase.php';
});
?>`

Ejemplo #2 Ejemplo de spl_autoload_register() donde la clase no es cargada

`<?php
namespace Foobar;
class Foo {
static public function test($nombre) {
print '[['. $nombre .']]';
}
}
spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // A partir de PHP 5.3.0
new ClaseInexistente;
?>`

El resultado del ejemplo sería algo similar a:

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

### Ver también

- __autoload() - Intenta cargar una clase sin definir