php常用执行函数(PHP自动载入类文件函数__autoload的使用方法)
php常用执行函数
PHP自动载入类文件函数__autoload的使用方法开发面向对象的应用程序时,往往要对每个类的定义建立一个 PHP 源文件。这样的做法产生的一个很大的烦恼就是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表。
在PHP开发的系统中,当在一个文件中需要调用另一个PHP文件中声明的类时,就需要通过include或require把这个文件引入。不过有的时候,在文件众多的项目中,要一一将所需类的文件都包含进来,是一个让人很头疼的事,所以我们能不能在用到什么类的时候,再把这个类所在的php文件导入呢?这就是我们这里我们要讲的自动加载类。
在 PHP 5 中,可以定义一个 __autoload()
函数,它会在试图使用尚未被定义的类时自动调用,通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类, __autoload()函数接收的一个参数,就是你想加载的类的类名,所以你做项目时,在组织定义类的文件名时,需要按照一定的规则,最好以类名为中心,也可以加上统一的前缀或后缀形成文件名,比如 xxx_classname.php
、classname_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实现微信提现企业付款到零钱)
- php各个模式使用场景(PHP 并发场景的几种解决方案)
- php+mysql源码部署教程(在WIN主机IIS上支持PHP和MySQL实现方法)
- php怎么设置curl(php curl发送请求实例方法)
- thinkphp5.1修改(ThinkPHP 5.1 跨域配置方法)
- thinkphp数据库使用(thinkphp3.2同时连接两个数据库的简单方法)
- php和java联系(PHP实现与java 通信的插件使用教程)
- php面向对象教程理解(PHP面向对象程序设计之构造方法和析构方法详解)
- php各种绕过姿势(php面试实现反射注入的详细方法)
- thinkphp5.1请求流程(ThinkPHP5.0框架使用build 自动生成模块操作示例)
- thinkphp框架切换数据库(ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例)
- php函数的使用方法(PHP中str_split函数的用法讲解)
- phpcurl调用本地函数(PHP使用CURL实现下载文件功能示例)
- php实现redis消息队列(redis+php实现微博三微博列表功能详解)
- php上传图片视频代码(详解PHP素材图片上传、下载功能)
- thinkphp5 新增模块(Thinkphp5.0框架的Db操作实例分析连接、增删改查、链式操作等)
- 袁冰妍终于接到新剧,饰演反追男主,看到合作演员 眼光果然毒辣(袁冰妍终于接到新剧)
- 记忆中的台词(记忆中的台词)
- 袁冰妍轧戏 拍《琉璃》的同时还在拍《将夜》,难怪被骂演技差(拍琉璃的同时还在拍将夜)
- 刚红就耍大牌,《琉璃》角色滤镜碎一地,心疼工作人员(琉璃角色滤镜碎一地)
- 袁冰妍郑业成这对可以处,有脸红情话他们是真的敢说(袁冰妍郑业成这对可以处)
- 《祝卿好》台词又土又甜,就喜欢这么直接的恋爱(祝卿好台词又土又甜)
热门推荐
- 如何使用github中的python库(使用GitHub和Python实现持续部署的方法)
- mysql一次查询的过程(一篇文章弄懂MySQL查询语句的执行过程)
- dedecms安全验证(dede验证码错误 dede验证码一直提示错误的解决方法)
- ASP.NET URLRewriter伪静态
- mysql主从同步原理详解(MySQL双主主主架构配置方案)
- mysql效率查询(MySQL 如何分析查询性能)
- C#获取页面的HTML
- html5如何使用svg(将SVG图引入到HTML页面的实现)
- 所有聚合函数mysql教程(Mysql 聚合函数嵌套使用操作)
- php 数据库查询并写入(PHP实现单条sql执行多个数据的insert语句方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9