1. PHP自动载入类文件函数__autoload的使用方法

     更新时间:2019年03月25日 09:25:39   作者:CODETC   我要评论

    今天小编就为大家分享一篇关于PHP自动载入类文件函数__autoload的使用方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    开发面向对象的应用程序时,往往要对每个类的定义建立一个 PHP 源文件。这样的做法产生的一个很大的烦恼就是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表。

    在PHP开发的系统中,当在一个文件中需要调用另一个PHP文件中声明的类时,就需要通过include或require把这个文件引入。不过有的时候,在文件众多的项目中,要一一将所需类的文件都包含进来,是一个让人很头疼的事,所以我们能不能在用到什么类的时候,再把这个类所在的php文件导入呢?这就是我们这里我们要讲的自动加载类。

    在 PHP 5 中,可以定义一个 __autoload()函数,它会在试图使用尚未被定义的类时自动调用,通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类, __autoload()函数接收的一个参数,就是你想加载的类的类名,所以你做项目时,在组织定义类的文件名时,需要按照一定的规则,最好以类名为中心,也可以加上统一的前缀或后缀形成文件名,比如 xxx_classname.phpclassname_xxx.php以及就是classname.php等等。

    我们以一个例子来?#24471;?#19968;下__autoload 的使用方法,下面分别从 ClassA.php 和 ClassB.php 文件中加载 ClassA 和 ClassB 类

    <?php
    //定义一个类ClassA,文件名为ClassA.php
    class ClassA{
     public function __construct(){
     echo "ClassA load success!";
     }
    }
    ?>
    <?php
    //定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA
    class ClassB extends ClassA {
     public function __construct(){
     echo "ClassB load success!";
     }
    }
    ?>
    <?php
    function __autoload($classname)
    {
     $classpath="./".$classname.'.php';
     if(file_exists($classpath)){
     require_once($classpath);
     }
     else{
     echo 'class file'.$classpath.'not found!';
     }
    }
    //ClassA类不存在时,自动调用__autoload()函数,传入参数”ClassA”
    $obj = new ClassA();
    //ClassB类不存在时,自动调用__autoload()函数,传入参数”ClassB”
    $obj2 = new ClassB();
    ?>

    能过上面的例子,我们发现在使用ClassA和ClassB时,我们并没有手动引入ClassA.php和ClassB.php文件,但却能正常使用这两个类,可见__autoload是多么地好用。

    但在使用__autoload时也要注意一些问题,比如上面的ClassB类,它是继承了ClassA类,如果这时ClassA和ClassB不在同一个目录?#26412;?#20250;出错,所以建议把所有存在extends关系的类放在同一个文件目录下,或者在实例化一个继承类的时候在文件中手工包含被继承的类。还有一点就是在使用自动载入函数时一定要注意类名与文件名的对应关系。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    相关文章

    • 新浪微博API开发简介之用户授权(PHP基础篇)

      新浪微博API开发简介之用户授权(PHP基础篇)

      己在开发和学习的过程中,感觉虽然没有太大难度,但还是有一些问题是需要我们注意的,今天就我在开发和学习的过程中,简单的对利用PHP进行新浪微博API开发的内容进行一个整理和?#24471;?/div> 2011-09-09
    • php实现微信原生支付(扫码支付)功能

      php实现微信原生支付(扫码支付)功能

      这篇文章主要为大家详细介绍了php实现微信原生支付,扫码支付功能,具有一定的参考价值,感兴趣的小伙伴们可以参?#23478;?#19979;
      2018-05-05
    • Yii遍历行下每列数据的方法

      Yii遍历行下每列数据的方法

      这篇文章主要介绍了Yii遍历行下每列数据的方法,结合实例形式分析了Yii框架下数据遍历的相关操作技巧,需要的朋友可以参考下
      2016-10-10
    • PHP 输出URL的快捷方式示例代码

      PHP 输出URL的快捷方式示例代码

      输出URL的快捷方式的实现方法有很多,在本文将为大家介绍下使用php是如何实现的,感兴趣的朋友可以参考下,希望对大家有所帮助
      2013-09-09
    • ?#31243;?#20351;用 Yii2 AssetBundle 中 $publishOptions 的正确姿势

      ?#31243;?#20351;用 Yii2 AssetBundle 中 $publishOptions 的正确姿势

      本篇文章主要介绍了?#31243;?#20351;用 Yii2 AssetBundle 中 $publishOptions 的正确姿势,具有一定的参考价值,感兴趣的小伙伴们可以参?#23478;?#19979;
      2017-11-11
    • 使用PHP uniqid函数生成唯一ID

      使用PHP uniqid函数生成唯一ID

      生成唯一ID的应用场景非常普遍,如临时缓存文件名称,临时变量,临时安全码等,uniqid()函数基于以微秒计的当前时间,生成一个唯一的 ID。由于生成唯一ID与微秒时间关联,因此ID的唯一性非常可靠
      2015-11-11
    • Yii中CGridView实现批?#21487;?#38500;的方法

      Yii中CGridView实现批?#21487;?#38500;的方法

      这篇文章主要介绍了Yii中CGridView实现批?#21487;?#38500;的方法,实例分析了CGridView的相关设置,前台JS调用与后台Action具体功能实现的技巧,需要的朋友可以参考下
      2015-12-12
    • PHPMailer发送邮件

      PHPMailer发送邮件

      PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及?#35745;?#38468;件,前提要设置好邮件服务器就能实现邮件发送功能。本文给大家分享PHPMailer发送邮件功能,一起看看吧
      2016-12-12
    • php获取qq用户?#27973;?#21644;在线状态(实例分析)

      php获取qq用户?#27973;?#21644;在线状态(实例分析)

      获取qq在线状态官方已有API提供了,我们用另一种方法获取qq用户?#27973;?#21644;在线状态,主要是为学习PHP。
      2013-10-10
    • PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例

      PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例

      这篇文章主要介绍了PHP模板引擎Smarty之配置文件在模板变量中的使用方法,结合实例形式分析了配置文件变量的具体使用步骤与相关技巧,需要的朋友可以参考下
      2016-04-04

    最新评论

    山东群英会开奖查询
      1. 体彩20选5复式 德克萨斯扑克下载 足彩任选9场规则 山西快乐10分平台 河北11选5现场直播 羽毛球拉线 南来北往(二肖中特)实力资料 中华彩票网是不是真的吗 足彩360足彩胜负彩九场 英超直播全场次 安徽快三走势图 幸运赛车3d 顶呱刮怎么玩 湖北快三形态走势图 网易彩票可信吗