php面向对象全攻略 (十七) 自动加载类


Posted in PHP onSeptember 30, 2009

自动加载类
很多开发者写面向对象的应用程序时,对每个类的定义建立一个PHP 源文件。一个很大
的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表。
在软件开发的系统中,不可能把所有的类都写在一个PHP 文件中,当在一个PHP 文件
中需要调用另一个文件中声明的类时,就需要通过include 把这个文件引入。不过有的时候,
在文件众多的项目中,要一一将所需类的文件都include 进来,是一个很让人头疼的事,所以
我们能不能在用到什么类的时候,再把这个类所在的PHP 文件导入呢?这就是我们这里我们
要讲的自动加载类。
在PHP5 中,可以定义一个__autoload()函数,它会在试图使用尚未被定义的类时自动调
用,通过调用此函数,脚本引擎在PHP 出错失败前有了最后一个机会加载所需的类,
__autoload()函数接收的一个参数,就是你想加载的类的类名,所以你做项目时,在组织定义
类的文件名时,需要按照一定的规则,最好以类名为中心,也可以加上统一的前缀或后缀形
成文件名,比如xxx_classname.php、classname_xxx.php 以及就是classname.php 等等。
本例尝试分别从MyClass1.php 和MyClass2.php 文件中加载MyClass1 和MyClass2 类
代码片段

<?php 
function __autoload($classname) { 
require_once $classname . '.php'; 
} 
//MyClass1类不存在自动调用__autoload()函数,传入参数”MyClass1” 
$obj = new MyClass1(); 
//MyClass2类不存在自动调用__autoload()函数,传入参数”MyClass2” 
$obj2 = new MyClass2(); 
?>
PHP 相关文章推荐
用PHP编程开发“虚拟域名”系统
Oct 09 PHP
source.php查看源文件
Dec 09 PHP
网站用php实现paypal整合方法
Nov 28 PHP
php设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
PHP curl 获取响应的状态码的方法
Jan 13 PHP
PHP中file_exists()判断中文文件名无效的解决方法
Nov 12 PHP
PHP页面输出搜索后跳转下一页的处理方法
Sep 30 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 #PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 #PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 #PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 #PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
Sep 30 #PHP
php面向对象全攻略 (十) final static const关键字的使用
Sep 30 #PHP
php面向对象全攻略 (九)访问类型
Sep 30 #PHP
You might like
2020最新CPU的性能排名
2020/04/02 数码科技
PHP文件读写操作之文件写入代码
2011/01/13 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
js prototype截取字符串函数
2010/04/01 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
2016/05/12 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
python字典基本操作实例分析
2015/07/11 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python实现自动装机功能案例分析
2020/10/22 Python
python cookie反爬处理的实现
2020/11/01 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
教师中国梦演讲稿
2014/04/23 职场文书
活动总结模板
2014/05/09 职场文书
化工专业求职信
2014/07/01 职场文书
2014年村官工作总结
2014/11/24 职场文书
董事长助理工作总结2015
2015/07/23 职场文书