首頁 > php教程 > php手册 > php自动加载类__autoload()的方法

php自动加载类__autoload()的方法

WBOY
發布: 2016-06-13 09:51:35
原創
993 人瀏覽過

本文章来给大家简单的介绍一下关于php自动加载类__autoload()的方法,希望此方法对各位同学会有所帮助哦。

作用:当在程序中需要实例化一个类,刚好这这类又不是在本文件中,则需要用包含函数将外部文件包含进来。但是,当要用的外部类很多后,就会发现用包含函数会显得十分的繁琐,这是就可以用__autoload()全局函数自动加载类。

当在index.php中要使用前面三个类时,就需要写三个例如include("name.class.php") 这样的方法,效率会十分低,但如果使用了__autoload()函数就不用这样麻烦了,只需要写这样一个函数方法就可以了:

在 PHP 5 中,不再需要这样了。可以定义一个 __autoload() 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。

在下例中将通过实例来说明 __autoload() 是如何使用的。


首先定义一个类ClassA,文件名为ClassA.class.php

 代码如下 复制代码

 class ClassA{ 

 public  function funa(){ 

   echo "classA  loaded successfully!
"; 

  } 

}

然后在相同目录下再定义另一个类ClassB,文件名为ClassB.class.php,ClassB继承ClassA

 

 代码如下 复制代码

 class ClassB extends ClassA { 

 public function funb(){ 

                                                       

   echo "classB also loaded successfully!
"; 

  } 

 }

最后在与上面两个文件相同目录下再定义一个autoload.php(这个文件名随便取)

 代码如下 复制代码

 

function __autoload($class_name) { 

    require_once ("./".ucfirst($class_name).'.class.php');//ucfirst使类名首字母转换为大写 

 $obj = new ClassB(); 

$obj->funa(); 

$obj->funb(); 

?>

运行autoload.php的程序,看结果:

classA loaded successfully!

classB also loaded successfully!


例子: 文件夹下有这样几个文件:

User.class.php;
Person.class.php;
Message.class.php;
index.php;


我们就可以这样操作

 代码如下 复制代码

index.php

function __autoload($className){     //ucfirst() 将字符串首字母变为大写

include("ucfirst($className)".class.".php"); }

/**************

*例如:在index.php文件中实例化User.class.php中的User类,如果不存在则自动调用__autoload()函数

 代码如下 复制代码

*,将类名User作为参数传入

*************/

$user=new User();

//通过自动加载类调用User.class.php文件

$person=new Person();

//通过自动加载类调用Person.class.php文件

$Message=new Message();

//通过自动加载类调用Message.classphp文件 function="" message="new" person="new" user="new">

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板