spl_autoload_register 注册给定的函数作为 __autoload 的实现
发表日期:2021-07-01 08:56:26 | 来源: | | 浏览(1045) 分类:SPL 函数
spl_autoload_register
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
spl_autoload_register — 注册给定的函数作为 __autoload 的实现
说明
$autoload_function
= ?, bool $throw
= true, bool $prepend
= false): bool将函数注册到SPL __autoload函数队列中。如果该队列中的函数尚未激活,则激活它们。
如果在你的程序中已经实现了__autoload()函数,它必须显式注册到__autoload()队列中。因为 spl_autoload_register()函数会将Zend Engine中的__autoload()函数取代为spl_autoload()或spl_autoload_call()。
如果需要多条 autoload 函数,spl_autoload_register() 满足了此类需求。 它实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行。相比之下, __autoload() 只可以定义一次。
参数
-
autoload_function
-
欲注册的自动装载函数。如果没有提供任何参数,则自动注册 autoload 的默认实现函数spl_autoload()。
-
throw
-
此参数设置了
autoload_function
无法成功注册时, spl_autoload_register()是否抛出异常。 -
prepend
-
如果是 true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。
返回值
成功时返回 true
, 或者在失败时返回 false
。
更新日志
版本 | 说明 |
---|---|
5.3.0 | 引入了命名空间的支持。 |
5.3.0 |
添加了 prepend 参数。
|
范例
示例 #1 spl_autoload_register() 作为 __autoload() 函数的替代
<?php // function __autoload($class) { // include 'classes/' . $class . '.class.php'; // } function my_autoloader($class) { include 'classes/' . $class . '.class.php'; } spl_autoload_register('my_autoloader'); // 或者,自 PHP 5.3.0 起可以使用一个匿名函数spl_autoload_register(function ($class) { include 'classes/' . $class . '.class.php'; } ); ?>
示例 #2 class 未能加载的 spl_autoload_register() 例子
<?php namespace Foobar; class Foo { static public function test($name) { print '[['. $name .']]'; } } spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // 自 PHP 5.3.0 起new InexistentClass; ?>
以上例程的输出类似于:
[[Foobar\InexistentClass]] Fatal error: Class 'Foobar\InexistentClass' not found in ...
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- class_implements 返回指定的类实现的所有接口。(0)
- class_parents 返回指定类的父类。(0)
- class_uses Return the traits used by the given class(0)
- iterator_apply 为迭代器中每个元素调用一个用户自定义函数(0)
- iterator_count 计算迭代器中元素的个数(0)
- iterator_to_array 将迭代器中的元素拷贝到数组(0)
- spl_autoload_call 尝试调用所有已注册的 __autoload() 函数来装载请求类(0)
- spl_autoload_extensions 注册并返回 spl_autoload 函数使用的默认文件扩展名(0)
- spl_autoload_functions 返回所有已注册的 __autoload() 函数(0)
- spl_autoload_register 注册给定的函数作为 __autoload 的实现(0)
- spl_autoload_unregister 注销已注册的 __autoload() 函数(0)
- spl_autoload __autoload()函数的默认实现(0)
- spl_classes 返回所有可用的SPL类(0)
- spl_object_hash 返回指定对象的hash id(0)
- spl_object_id Return the integer object handle for given object(0)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)