在PHP的总结spl_autoload_register函数的用法
(PHP > = 5 5.1.2)
spl_autoload_register注册__autoload()函数
解释
布尔spl_autoload_register({回调autoload_function美元})
该功能是在SPL __autoload函数堆栈注册。如果在栈的功能没有被激活,被激活。
如果__autoload功能已经在你的程序中实现的,它必须在__autoload stack.because明确注册
的spl_autoload_register()函数将取代在Zend引擎的__autoload功能spl_autoload()或
spl_autoload_call()。
参数
autoload_function
自动加载功能,拟注册。如果没有提供参数,对加载默认的实现功能的自动注册
spl_autoload()。
返回值
如果成功,返回true,并且不能返回false。
注:SPL标准PHP库的缩写(标准PHP库),它是一个扩展库介绍了PHP5,其主要功能包括自动加载机制和各种迭代器接口或类列入实施。SPL的加载机制的实现是通过与自动加载功能,分功能指针autoload_func自身implementation.spl功能实现了两者的不同功能,spl_autoload和spl_autoload_call,实施不同的自动加载机制autoload_func指出这两种不同的函数地址。
例子
让我们有一个类文件,A.php,它定义了一个类命名:
< PHP
班上的一个
{
公共功能__construct()
{
echo'got它。;
}
}
< PHP
班上的一个
{
公共功能__construct()
{
echo'got它。;
}
}
然后我们有一个编辑,需要使用类的一种,传统的写作方式
< PHP
要求('a.php);
美元=新的A();
< PHP
要求('a.php);
美元=新的A();
但问题是,如果我们的index.php需要包含超过一个,它需要很多的课,所以我们要写很多行需要的报表,有时会让人感觉不好。
但在PHP5的版本,我们不需要做了。在PHP5,的__autoload函数被调用时自动尝试使用未定义的类,所以我们可以让PHP自动加载类的而不是写了一长串的包含文件__autoload功能写作。
例如,在上面的例子中,是可以这样写:
< PHP
功能__autoload(合班)
{
$;
如果(is_file(文件)){
require_once(文件);
}
}
美元=新的A();
< PHP
功能__autoload(合班)
{
$;
如果(is_file(文件)){
require_once(文件);
}
}
美元=新的A();
当然,以上是最简单的演示。__autoload只是include_path找到类文件和加载。我们可以定义__autoload加载类的规则,根据自己的需要。
此外,如果我们不想调用的__autoload当我们想自动加载,而不是调用自己的函数(或类的方法),我们可以用spl_autoload_register登记自己的autoload函数,函数原型如下:
布尔spl_autoload_register({回调autoload_function美元})
我们继续重写上面的示例:
< PHP
函数加载器($类)
{
$;
如果(is_file(文件)){
require_once(文件);
}
}
spl_autoload_register('loader);
美元=新的A();
< PHP
函数加载器($类)
{
$;
如果(is_file(文件)){
require_once(文件);
}
}
spl_autoload_register('loader);
美元=新的A();
这也可以正常运行,当PHP不叫__autoload当寻找一类,而是调用我们定义,装载机的功能。以同样的方式,下面的文字也可能。
< PHP
类装载器
{
公共静态函数loadClass(合班)
{
$;
如果(is_file(文件)){
require_once(文件);
}
}
}
spl_autoload_register(阵列('loader ','loadclass '));
美元=新的A();