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

 更新时间:2019年03月25日 09:25:38   作者:CODETC  
今天小编就为大家分享一篇关于PHP自动载入类文件函数__autoload的使用方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

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

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

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

我们以一个例子来说明一下__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不在同一个目录时就会出错,所以建议把所有存在extends关系的类放在同一个文件目录下,或者在实例化一个继承类的时候在文件中手工包含被继承的类。还有一点就是在使用自动载入函数时一定要注意类名与文件名的对应关系。

总结

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

相关文章

  • PHP查询数据库中满足条件的记录条数(两种实现方法)

    PHP查询数据库中满足条件的记录条数(两种实现方法)

    在需要输出网站用户注册数或者插入数据之前判断是否有重复记录时,就需要获取满足条件的MySQL查询的记录数目,接下来介绍两种查询统计方法,感兴趣的朋友可以了解下啊,或许对你有所帮助
    2013-01-01
  • thinkphp5框架前后端分离项目实现分页功能的方法分析

    thinkphp5框架前后端分离项目实现分页功能的方法分析

    这篇文章主要介绍了thinkphp5框架前后端分离项目实现分页功能的方法,结合实例形式分析了thinkPHP5前后端分离项目的分页功能常见实现技巧与操作注意事项,需要的朋友可以参考下
    2019-10-10
  • PHP控制前台弹出对话框的实现方法

    PHP控制前台弹出对话框的实现方法

    本文给大家分享通过php echo出javascript脚本来控制前台弹出对话框的效果,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-08-08
  • PHP读取大文件的几种方法介绍

    PHP读取大文件的几种方法介绍

    本篇文章主要介绍了基于PHP读取大文件的几种方法,主要有3种方法。感兴趣的朋友可以参考一下。
    2016-10-10
  • Windows中使用计划任务自动执行PHP程序实例

    Windows中使用计划任务自动执行PHP程序实例

    相信不少读者(PHP爱好者)在工作、学习的过程中经常抱怨:在WIN如何让PHP定时自动发信呢??如何让MYSQL实现自动备份而无后顾之忧呢??如 果完全依靠手工进行当然也可以实现,但操作上似乎过于繁琐了一点!别着急,利用系统的任务计划程序(Windows 98称之为计划任务)可轻易解决这一问题。这一功能往往被很多用户忽略或者未曾想到:)
    2014-05-05
  • ThinkPHP3.2框架使用addAll()批量插入数据的方法

    ThinkPHP3.2框架使用addAll()批量插入数据的方法

    这篇文章主要介绍了ThinkPHP3.2框架使用addAll()批量插入数据的方法,结合实例形式分析了thinkPHP针对单条数据插入及批量数据插入操作的相关实现技巧,需要的朋友可以参考下
    2017-03-03
  • 微信公众平台开发之配置与请求

    微信公众平台开发之配置与请求

    微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。本文给大家介绍微信公众平台开发之配置与请求,需要的朋友可以参考下
    2015-08-08
  • PHP生成二维码的两个方法和实例

    PHP生成二维码的两个方法和实例

    这篇文章主要介绍了PHP生成二维码的两个方法和实例,分别使用Google API和PHP二维码生成类库PHP QR Code实现,需要的朋友可以参考下
    2014-07-07
  • php实现数组筛选奇数和偶数示例

    php实现数组筛选奇数和偶数示例

    这篇文章主要介绍了php实现数组筛选奇数和偶数示例,需要的朋友可以参考下
    2014-04-04
  • PHP远程采集图片详细教程

    PHP远程采集图片详细教程

    这篇文章主要介绍了PHP远程采集图片详细教程,一步一步实现图片的采集功能,简单的入门教程,需要的朋友可以参考下
    2014-07-07

最新评论