array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.spl-autoload-register.php', 1 => 'spl_autoload_register', ), 'up' => array ( 0 => 'ref.spl.php', 1 => 'Funções da SPL', ), 'prev' => array ( 0 => 'function.spl-autoload-functions.php', 1 => 'spl_autoload_functions', ), 'next' => array ( 0 => 'function.spl-autoload-unregister.php', 1 => 'spl_autoload_unregister', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/spl/functions/spl-autoload-register.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
spl_autoload_register — Registra a função dada como implementação __autoload()
Registrar uma função na fila de __autoload fornecida pelo spl. Se a fila ainda não estiver ativada, será ativada.
Se seu código tiver uma função __autoload() existente, então esta função deve ser registrada explicitamente na fila __autoload. Isso ocorre porque spl_autoload_register() substituirá efetivamente o cache do mecanismo para a função __autoload() por spl_autoload() ou spl_autoload_call().
Se houver várias funções de carregamento automático, spl_autoload_register() permite isso. Ele cria efetivamente uma fila de funções de carregamento automático e executa cada uma delas na ordem em que são definidas. Em contraste, __autoload() só pode ser definido uma vez.
callback
A função de carregamento automático sendo registrada.
Se for null
, então a implementação padrão de
spl_autoload() será registrada.
A class
não conterá a barra invertida
inicial de um identificador totalmente qualificado.
throw
Este parâmetro especifica se
spl_autoload_register() deve lançar
exceções quando o callback
não pode ser registrado.
prepend
Se true, spl_autoload_register() irá adicionar o carregador automático na fila de carregamento automático antes de anexá-lo.
Versão | Descrição |
---|---|
8.0.0 |
callback é anulável agora.
|
Exemplo #1 spl_autoload_register() como substituição para um __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');
// Ou, usando uma função anônima
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
?>
Exemplo #2 spl_autoload_register() exemplo onde a classe não é carregada
<?php
namespace Foobar;
class Foo {
static public function test($class) {
print '[['. $class .']]';
}
}
spl_autoload_register(__NAMESPACE__ .'\Foo::test');
new InexistentClass;
?>
O exemplo acima produzirá algo semelhante a:
[[Foobar\InexistentClass]] Fatal error: Class 'Foobar\InexistentClass' not found in ...
Exemplo #3 O identificador será fornecido sem a barra invertida inicial
<?php
spl_autoload_register(static function ($class) {
var_dump($class);
});
class_exists('RelativeName');
class_exists('RelativeName\\WithNamespace');
class_exists('\\AbsoluteName');
class_exists('\\AbsoluteName\\WithNamespace');
?>
O exemplo acima produzirá:
string(12) "RelativeName" string(26) "RelativeName\WithNamespace" string(12) "AbsoluteName" string(26) "AbsoluteName\WithNamespace"