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关系的类放在同一个文件目录下,或者在实例化一个继承类的时候在文件中手工包含被继承的类。还有一点就是在使用自动载入函数时一定要注意类名与文件名的对应关系。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。如果你想了解更多相关内容请查看下面相关链接
- thinkphp框架详解(thinkphp3.2框架中where条件查询用法总结)
- php验证码初始化教程交流(PHP token验证生成原理实例分析)
- php7优化技巧(php7性能提升的原因详解)
- php简单定时执行任务(php实现 master-worker 守护多进程模式的实例代码)
- thinkphp5配置入口路径(ThinkPHP5.1框架数据库链接和增删改查操作示例)
- php环境搭建windows系统(Windows环境下安装PHP Pear的方法图文教程)
- php执行语句(PHP goto语句用法实例)
- php缓存技术学习(简单实用的PHP文本缓存类实例)
- linux安装php目录路径修改(ubuntu环境下的php相关路径与修改方法)
- thinkphp导入excel(Yii框架使用PHPExcel导出Excel文件的方法分析改进版)
- apache配置详解(apache2.2和php5.2.17在windows下整合过程的错误解决方法)
- thinkphp接口开发实例(ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解)
- 学会php的路线图(PHP进阶学习之Geo的地图定位算法详解)
- phpstudy中apache到期如何修改(phpStudy找不到Apache“服务名” 解决方法)
- windowsserver2008部署php项目(win2008 r2 服务器环境配置FTP/ASP/ASP.Net/PHP)
- php连接oracle(PHP远程连接oracle数据库操作实现方法图文详解)
- 王铲铲的致富之路无限金币卡法攻略教学(王铲铲的致富之路无限金币卡法攻略教学)
- 文明6金币太少怎么办 文明6无限刷钱教程(文明6金币太少怎么办)
- 开国中将,王牌军63军首任政委,两个连襟一个上将一个少将传为佳话(王牌军63军首任政委)
- 臭名昭著的731部队最高负责人 石井四郎(臭名昭著的731部队最高负责人)
- 王牌部队,你看的剧情我看的时尚(你看的剧情我看的时尚)
- 被鉴定的古董价值300万 当心,你可能遇到诈骗了(被鉴定的古董价值300万)
热门推荐
- mysql分区怎么实现(MySql分表、分库、分片和分区知识深入详解)
- SQL SERVER书签查找
- 在谷歌浏览器中直接编辑网页
- laravelblade界面(laravel5.1框架基础之Blade模板继承简单使用方法分析)
- 用python图片转字符串(python实现图片转字符小工具)
- 软件测试常用mysql语句(MySQL压力测试工具Mysqlslap的使用)
- css3旋转动画教学(css3动画效果抖动解决方法)
- mysql模糊查询语句(mysql中like % %模糊查询的实现)
- python自带的ide的使用(基于python的ini配置文件操作工具类)
- docker-compose部署实例(详解docker-compose速度太慢解决方式)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9