spl_autoload_register()函数的作用

来源:互联网 发布:油漆品牌 知乎 编辑:程序博客网 时间:2024/06/04 23:22

spl_autoload_register()函数的作用
发表于1年前(2012-11-28 20:57)   阅读(407) | 评论(0) 3人收藏此文章, 我要收藏
赞0autoload spl_autoload_register


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

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

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

view sourceprint?
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文件中写入

view sourceprint?
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

view sourceprint?
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(),既然大家都用自然有他的道理,我先留着这个疑问吧。

0 0
原创粉丝点击