五、类的自动加载

类的自动加载
类的自动加载是指,在外面的页面中,并不需要去“引入”(包含)类文件,但是程序会在需要一个类的时候就自动去“动态加载”该类。
什么叫做“需要一个类”?
1,创建一个对象的时候(new)
2,直接使用一个类名(操作静态或静态方法)
做法:
做法1:使用__autoload魔术函数。
即,“当程序需要一个类”的时候,就会去调用该函数:该函数我们需要自己去定义并在其中写好加载类文件的通用语句
例:  <?php
           class A{
           function __autoload($className){
               require "./library/". $className . ".class.php";
       }
     }
        $o1 = new A();
      ?>
做法2:使用spl_autoload_register函数
该函数的作用是:用它“注册”(声明)多个可以用来代替__autoload函数作用的函数,语法如下:
spl_autoload_regist(“函数名1”);
spl_autoload_regist(“函数名2”);
.........
自然,其后也得去定义这些函数,并且这些函数的作用跟__autoload一样,不过此时就可以应对“更多的情形”——比如类文件分布在不同的目录中。
<?php
//注册两个用于自动加载的函数名:
spl_autoload_register('auto1');//这只是声明
spl_autoload_register('auto2');
//再分别定义该两个函数:
function auto1($className){
 $file = "./library/" . $className . ".class.php";
 if(file_exists($file)){
  require "./library/" . $className . ".class.php";
 }
}
function auto2($className){
 $file = "./class/" . $className . ".class.php";
 if(file_exists($file)){
  require "./class/" . $className . ".class.php";
 }
}
//这样,如果需要一个类,但当前页面还没有加载该类,
//就会依次调用auto1和auto2,直到找到该类文件并加载
$o1 = new A(); //此时在当前文件中找不到A类,就会先去调用auto1函数,就能够加载该类,则就不会再去调用auto2函数了
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值