php中__autoload和spl_autoload_register的用法

__autoload方法是用于类的的自动加载的。如果没有这个方法,在调用各种类的时候则需要引入各种类文件。
比如有一个类文件HelloWord.class.php:

 class HelloWord{
       public function doPrint(){
       echo "helloWord";
     }
}

如果要调用HelloWord这个类的话则必须引入HelloWord.class.php,如果要调用很多类似的类则需要引入各种文件,整个代码的可读性就会很差,使用__autoload则可以有效解决这个问题

<?php
     function __autoload($class){
      $file = $class.".class.php";
      if(is_file($file)){
      require($file);
     }
     }
     $class = new HelloWord();
 $class->doPrint();
   ?> 

上述代码很好理解PHP在实例化HelloWord这个类的时候回去先访问__autoload()这个方法并更具方法中的规则引入类文件

spl_autoload_register方法也是实现自动加载类文件的功能,不过他是注册给定的函数作为 __autoload 的实现
上述代码可以改为:

  <?php
     function autoload($class){
    $file = $class.".class.php";
    if(is_file($file)){
        require($file);
    }
}
spl_autoload_register("autoload");
$class = new HelloWord();
$class->doPrint();

同样也可以实现自动加载的方法,spl_autoload_register也可以将类中的静态方法作为自动加载方法调用:spl_autoload_register(array('$className','$function'));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值