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


Posted in PHP onFebruary 04, 2012

这也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可。下面是一个实际的例子:

class ClassA{ 
public function __construct(){ 
echo “ClassA load success!”; 
} 
} 
//定义一个类ClassA,文件名为ClassA.php 
class ClassA{ 
public function __construct(){ 
echo “ClassA load success!”; 
} 
} 
class ClassB extends ClassA { 
public function __construct(){ 
//parent::__construct(); 
echo “ClassB load success!”; 
} 
} 
//定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA 
class ClassB extends ClassA { 
public function __construct(){ 
//parent::__construct(); 
echo “ClassB load success!”; 
} 
} 
定义两个测试用的类之后,我们来编写一个含有__autoload()方法的PHP运行程序文件如下: 
function __autoload($classname){ 
$classpath=”./”.$classname.'.php'; 
if(file_exists($classpath)){ 
require_once($classpath); 
} 
else{ 
echo ‘class file'.$classpath.'not found!'; 
} 
} $newobj = new ClassA(); 
$newobj = new ClassB();

这个文件的运行是一点问题都没有的,可见autoload是多么的好用啊,呵呵……
但是不得不提醒你一下几个方面是必须要注意的。
1、如果类存在继承关系(例如:ClassB extends ClassA),并且ClassA不在ClassB所在目录
利用__autoload魔术函数实例化ClassB的时候就会受到一个致命错误:
Fatal error: Class ‘Classd' not found in ……ClassB.php on line 2,
解决方法:把所有存在extends关系的类放在同一个文件目录下,或者在实例化一个继承类的时候在文件中手工包含被继承的类;
2、另外一个需要注意的是,类名和类的文件名必须一致,才能更方便的使用魔术函数__autoload;
其他需要注意的事情:
3、在CLI模式下运行PHP脚本的话这个方法无效;
4、如果你的类名称和用户的输入有关——或者依赖于用户的输入,一定要注意检查输入的文件名,例如:.././这样的文件名是非常危险的。
PHP 相关文章推荐
Phpbean路由转发的php代码
Jan 10 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
php发送post请求的三种方法
Feb 11 PHP
php验证是否是md5编码的简单代码
Apr 01 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
cakephp打印sql语句的方法
Feb 13 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
为你的 Laravel 验证器加上多验证场景的实现
Apr 07 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 #PHP
PHP中的cookie不用刷新就生效的方法
Feb 04 #PHP
PHP对象转换为数组函数(递归方法)
Feb 04 #PHP
PHP投票系统防刷票判断流程分析
Feb 04 #PHP
php摘要生成函数(无乱码)
Feb 04 #PHP
写出高质量的PHP程序
Feb 04 #PHP
组合算法的PHP解答方法
Feb 04 #PHP
You might like
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
php学习之function的用法
2012/07/14 PHP
给ECShop添加最新评论
2015/01/07 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
Ionic快速安装教程
2016/06/03 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
详解Python编程中基本的数学计算使用
2016/02/04 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
python plotly画柱状图代码实例
2019/12/13 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
小学语文教学反思
2014/02/10 职场文书
公司放假通知怎么写
2015/04/15 职场文书
课程设计感想范文
2015/08/11 职场文书
python中Matplotlib绘制直线的实例代码
2021/07/04 Python