加入收藏 | 设为首页 | 会员中心 | 我要投稿 天瑞地安资讯网 (https://www.52baoding.com/)- 网络、物联网络、物联安全、云安全、行业智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

推荐php自动加载类autoload的方法

发布时间:2023-10-26 11:31:35 所属栏目:PHP教程 来源:网络
导读:   作用:当在程序中需要实例化一个类,刚好这这类又不是在本文件中,则需要用包含函数将外部文件包含进来。但是,当要用的外部类很多后,就会发现用包含函数会显得十分的繁琐,这是就可以
  作用:当在程序中需要实例化一个类,刚好这这类又不是在本文件中,则需要用包含函数将外部文件包含进来。但是,当要用的外部类很多后,就会发现用包含函数会显得十分的繁琐,这是就可以用__autoload()全局函数自动加载类。
 
  当在index.php中要使用前面三个类时,就需要写三个例如include("name.class.php") 这样的方法,效率会十分低,但如果使用了__autoload()函数就不用这样麻烦了,只需要写这样一个函数方法就可以了:
 
  在 PHP 5 中,不再需要这样了。可以定义一个 __autoload() 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。
 
  在下例中将通过实例来说明 __autoload() 是如何使用的。
 
  首先定义一个类ClassA,文件名为ClassA.class.php
 
   代码如下
 
  1  class ClassA{
 
  2  public  function funa(){
 
  3    echo "classA  loaded successfully!
 
  ";
 
  4   }
 
  5 }
 
  然后在相同目录下再定义另一个类ClassB,文件名为ClassB.class.php,ClassB继承ClassA
 
  
 
   代码如下
 
  1  class ClassB extends ClassA {
 
  2  public function funb(){
 
  3                                                        
 
  4    echo "classB also loaded successfully!
 
  ";
 
  5   }
 
  6  }
 
  最后在与上面两个文件相同目录下再定义一个autoload.php(这个文件名随便取)
 
   代码如下
 
  1  
 
  2 function __autoload($class_name) {
 
  3     require_once ("./".ucfirst($class_name).'.class.php');//ucfirst使类名首字母转换为大写
 
  4 }
 
  5  $obj = new ClassB();
 
  6 $obj->funa();
 
  7 $obj->funb();
 
  8 ?>
 
  运行autoload.php的程序,看结果:
 
  classA loaded successfully!
 
  classB also loaded successfully!
 
 
  例子: 文件夹下有这样几个文件:
 
  User.class.php;
 
  Person.class.php;
 
  Message.class.php;
 
  index.php;
 
 
  我们就可以这样操作
 
   代码如下
 
  1 index.php
 
  2 function __autoload($className){     //ucfirst() 将字符串首字母变为大写
 
  3 include("ucfirst($className)".class.".php"); }
 
  4 /**************
 
  *例如:在index.php文件中实例化User.class.php中的User类,如果不存在则自动调用__autoload()函数
 
   代码如下
 
  1 *,将类名User作为参数传入
 
  2 *************/
 
  3 $user=new User();
 
  4 //通过自动加载类调用User.class.php文件
 
  5 $person=new Person();
 
  6 //通过自动加载类调用Person.class.php文件
 
  7 $Message=new Message();
 
  8 //通过自动加载类调用Message.classphp文件 function="" message="new" person="new" user="new">
 

(编辑:天瑞地安资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章