php类文件的自动加载机制__autoload,spl

面向对象开发推荐一个类一个php文件,这样在调用时会出现要包括较多的文件。在复杂的项目中经常会出现重复包括等问题。其实php内置有几种方法来自动根据需要加载相应的类库。

1、__autoload函数

php5中引入__autoload函数,会在试图使用尚未被定义的类时自动调用。在__autoload加载指定的类


function __autoload($class_name) {
    require_once $class_name . '.php';
}

$a= new MyClass();
$a->callname(); 

如上所示,当实例化MyClass时会自动调用__autoload,并传入类名参数,即MyClass。在__autoload加载文件。实现自动加载文件。但是__autoload有一个缺点。那就是同时只能有一个函数。否则报错


2、spl_autoload函数

set_include_path("/home/www/"); //这里需要将路径放入include 
spl_autoload("MyClass"); //寻找/home/www/MyClass.php 
$a = new MyClass(); 
$a->callname();

spl_autoload是__autoload函数的系统实现。在调用未定义的类之前,调用spl_autoload('class'),系统会从默认的include_path中寻找类class,并尝试加载。本函数要求类文件在同目录。或者使用set_include_path设置类目录。且在调用之前必须调用spl_autoload。因此不太方便。

3、spl_autoload_register函数(推荐)



function load_class($class){
        require_once("/home/www/{$class}.php");
}
spl_autoload_register('load_class'); 
$a = new MyClass(); 
$a->callname();


spl_autoload_register将注册一个函数到__autoload函数栈,并覆盖__autoload函数。使用方法同__autoload一样,而且可以同时有多个存在。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值