background image

PHP 开发:PHP 的 autoLoad 自动加载机制

php 的 autoload 大致可以使用两种方法:__autoload 和 spl 方法。这两种方法又各有不同的
几种使用方法
__autoload 的使用方法 1

 

最经常使用的就是这种方法,根据类名,找出类文件,然后 require_one 
代码如下:
 

function

 __autoload(

$class_name

) { 

$path

 = 

str_replace

('_', '/', 

$class_name

); 

require_once

 

$path

 . '.php'; 

// 这里会自动加载 Http/File/Interface.php 

 

文件

$a

 = 

new

 Http_File_Interface(); 

 
这种方法的好处就是简单易使用。当然也有缺点,缺点就是将类名和文件路径强制做了约

 

定,当修改文件结构的时候,就势必要修改类名。
 
__autoload 的使用方法 2

 

(直接映射法)

代码如下:
 

$map

 = 

array

'Http_File_Interface' => 'C:/PHP/HTTP/FILE/Interface.php' 
); 

function

 __autoload(

$class_name

) { 

if

 (isset(

$map

[

$class_name

])) { 

require_once

 

$map

[

$class_name

]; 


// 这里会自动加载 C:/PHP/HTTP/FILE/Interface.php 

 

文件

$a

 = 

new

 Http_File_Interface(); 

 
 
这种方法的好处就是类名和文件路径只是用一个映射来维护,所以当文件结构改变的时

 

候,不需要修改类名,只需要将映射中对应的项修改就好了。
 
这种方法相较于前面的方法缺点是当文件多了的时候这个映射维护起来非常麻烦,或许
这时候你就会考虑使用 json 或者单独一个文件来进行维护了。或许你会想到使用一个框架

 

来维护或者建立这么一个映射。
 
spl_autoload