首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

spl_autoload_register

(PHP 5 >= 5.1.2, PHP 7)

spl_autoload_register — Register given function as __autoload() implementation

Description

代码语言:javascript
复制
bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )

Register a function with the spl provided __autoload queue. If the queue 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 queue. 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 queue 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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
[[Foobar\InexistentClass]]
Fatal error: Class 'Foobar\InexistentClass' not found in ...

See Also

  • __autoload() - Attempt to load undefined class

← spl_autoload_functions

spl_autoload_unregister →

代码语言:txt
复制
 ? 1997–2017 The PHP Documentation Group

Licensed under the Creative Commons Attribution License v3.0 or later.

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com