关于php中的自动加载类

来源:互联网 发布:吉他定音器软件 编辑:程序博客网 时间:2024/06/05 13:15
PHP函数__autoload()和spl_autoload_register()


__autoload($classname){


}


当PHP找不到类文件会调用这个方法,当注册了自己的函数或方法时,PHP不会调用__autoload()函数,而会调用自定义的函数


spl_autoload_register('func_name');


spl_autoload_register(array('class_name','method_name'));


详细说明如下:


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指向这两个不同的函数地址来实现不同的自动加载机制。


test.class.php
<?php
class Test
{
function __construct()
{
   echo '希望和PHP,Flex高手成为朋友。一起学习,共同奋斗!!!QQ:1055983238';
}
}
?>
load.php
<?php
class LOAD
{
static function loadClass($class_name)
{
   $filename = $class_name.".class.php";
   if (is_file($filename)) return include_once $filename;
}
}
/**
* 设置对象的自动载入
* spl_autoload_register — Register given function as __autoload() implementation
*/
spl_autoload_register(array('LOAD', 'loadClass'));
$a = new Test();//实现自动加载,很多框架就用这种方法自动加载类
?>
原创粉丝点击