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 无限级 SelectTree 类
May 19 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
浅谈ThinkPHP的URL重写
Nov 25 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
PHP之预定义接口详解
Jul 29 PHP
php实现异步数据调用的方法
Dec 24 PHP
网页的分页下标生成代码(PHP后端方法)
Feb 03 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
PHP fprintf()函数用法讲解
Feb 16 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
又一个php 分页类实现代码
2009/12/03 PHP
浅析php数据类型转换
2014/01/09 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
javascript 流畅动画实现原理
2009/09/08 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
Django中处理出错页面的方法
2015/07/15 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
2014年除四害工作总结
2014/12/06 职场文书
研究生导师评语
2014/12/31 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
争先创优个人总结
2015/03/04 职场文书
交通事故被告代理词
2015/05/23 职场文书