PHP autoclass 使用

为了实现自动装在类而不用每次都include等操作而制定的机制,实现起来如下:

 

final class Util{
    // 定义一个通用的装载方法
    static function autoload($class_name){
//        echo 'SPL load class:', $class_name, '<br />';
        $fullpath = $_SERVER['CONTEXT_DOCUMENT_ROOT'].'/class/'.$class_name.'.class.php';
        if ( file_exists($fullpath)){
            // easy way 2 do, job as your own way
            include_once $fullpath;
        }
    }
}
// 注册下
spl_autoload_register("Util::autoload");

 

 由于PHP提供了默认的全局__autoload魔术方法,如果之前定义了__autoload的话,如:

 

function __autoload($classname){
// do something like include_once, require_once, etc
}

 

此时调用,spl_autoload_functions 会获得一个autoload的方法数组,__autoload赫然在列,上面的Util::autoload会紧随其后,其机制是会根据注册的顺序轮流执行,直到找到new的类为止。

这样的话,在调用new 生成对象时就会适当载入相关对象,如:

 

$skillService = new SkillService();

 

这个例子中会调用Util::autoload方法,找到$fullpath指定的位置下的SkillService定义文件并加载至,你的路径可能是这样:D:/web-root/class/SkillService.class.php

 

不错!至少我们不用每次都手动的引入文件了。

 

值得注意的是此系列方法源自php 5.1.2以后的版本。

 

另外,有函数 spl_autoload_extensions 可以和 spl_autoload 一起搭配使用,如:

// 以,分割的扩展名字符串
spl_autoload_extensions(‘.php, .class.php’);

// 自动载入相应的类,默认的__autoload实现,但配合了上面的方法
spl_autoload($ClassName);

 其他的spl相关方法还有,spl_autoload_unregister 用来卸载相应的autoload方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值