您的位置:首页 > 其它

spl_autoload_register()函数的作用

2014-01-17 14:39 260 查看
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(),既然大家都用自然有他的道理,我先留着这个疑问吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: