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 相关文章推荐
php生成WAP页面
Oct 09 PHP
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
THinkPHP获取客户端IP与IP地址查询的方法
Nov 14 PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 PHP
php 防护xss,PHP的防御XSS注入的终极解决方案
Apr 01 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
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
实用函数8
2007/11/08 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
JSONP之我见
2015/03/24 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
python在windows下实现备份程序实例
2014/07/04 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
python写程序统计词频的方法
2019/07/29 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
学校食堂采购员岗位职责
2013/12/05 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
学校节能减排倡议书
2014/05/16 职场文书
校庆团日活动总结
2014/08/28 职场文书
订货会邀请函
2015/01/31 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书