spl_autoload_register()函数的作用

spl_autoload_register()函数的作用

转自 http://my.oschina.net/alexskywinner/blog/92737

复习__autoload的时候,看到了spl_autoload_register()这个函数。但是一下子没有弄明白,通过查资料我算是弄明白了。

1.__autoload()    ——    自动加载函数

我把很多个类文件以 类名.class.php的形式存放在class目录中,在class的同级目录中建立一个index.php。进入class目录里面分别建立class1.class.php、class2.class.php、class3.class.php文件,分别为里面的文件添加一下代码

01 <?php
02 //class1.class.php中
03 class class1{
04     public function __construct(){
05         echo "class1";
06     }
07 }
08 ?>
09  
10 <?php
11 //class2.class.php中
12 class class2{
13     public function __construct(){
14         echo "class2";
15     }
16 }
17 ?>
18  
19 <?php
20 //class3.class.php中
21 class class3{
22     public function __construct(){
23         echo "class3";
24     }
25 }
26 ?>

index.php文件中写入

01 <?php
02 function __autoload($classname){
03     $filename "./class/".$classname.".class.php";
04     if(is_file($filename)){
05         include $filename;
06     }
07 }
08  
09 $test1 new class1();
10 echo '<br/>';
11 $test1 new class2();
12 echo '<br/>';
13 $test1 new class3();
14  
15 //结果是
16 class1
17 class2
18 class3
19  
20 ?>

我们成功的自动加载了class下面所有的要加载的类。

2.spl_autoload_register()    ——    注册__autoload()函数

class里面的文件不做任何改变,只是简单的改写一下index.php

01 <?php
02 // 写一个loadclass函数
03 // loadclass函数不具备自动加载类的功能
04 function loadclass($classname){
05     $filename "./class/".$classname.".class.php";
06     if(is_file($filename)){
07         include $filename;
08     }
09 }
10 // spl_autoload_register()函数让这个loadclass具备了自动加载类的功能
11 spl_autoload_register("loadclass");
12  
13 $test1 new class1();
14 echo '<br/>';
15 $test1 new class2();
16 echo '<br/>';
17 $test1 new class3();
18 ?>
至于性能上面,我没有过多的发言权,发现很多框架里面都是用的spl_autoload_register(),既然大家都用自然有他的道理,我先留着这个疑问吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值