background image

PHP 入门:spl_autoload_register 与 autoload 的区别

以下是对 spl_autoload_register 与 autoload 的区别,供大家参考下
spl_autoload_register
(PHP 5 >= 5.1.2)
spl_autoload_register — 注册__autoload()函数
说明
bool spl_autoload_register ([ callback 

$autoload_function

 ] )

将函数注册到 SPL __autoload 函数栈中。如果该栈中的函数尚未激活,则激活它们。
如果在你的程序中已经实现了__autoload 函数,它必须显式注册到__autoload 栈中。因为
spl_autoload_register()函数会将 Zend Engine 中的__autoload 函数取代为 spl_autoload()或
spl_autoload_call()。
参数
autoload_function 
欲注册的自动装载函数。如果没有提供任何参数,则自动注册 autoload 的默认实现函数
spl_autoload()。
返回值

 

如果成功则返回 TRUE

 

,失败则返回 FALSE。

注:SPL 是 Standard PHP Library(标准 PHP 库)的缩写。它是 PHP5 引入的一个扩展库,其
主要功能包括 autoload 机制的实现及包括各种 Iterator 接口或类。SPL autoload 机制的实现
是通过将函数指针 autoload_func 指向自己实现的具有自动装载功能的函数来实现的。SPL
有两个不同的函数 spl_autoload, spl_autoload_call,通过将 autoload_func 指向这两个不同的
函数地址来实现不同的自动加载机制。
范例
设我们有一个类文件 A.php,里面定义了一个名字为 A 的类:
代码如下:
 
<?php

class

 A

{

public

 

function

 __construct()

{

echo

 'Got it.';

}
}
 
然后我们有一个 index.php 需要用到这个类 A,常规的写法就是
代码如下:
 
<?php

require

('A.php');