spl_autoload_register

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

spl_autoload_registerRegistrar 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ónDescripció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

To Top