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(1)
Oct 09 PHP
PHP 可阅读随机字符串代码
May 26 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
PHP常见数组排序方法小结
Aug 20 PHP
PHP类的自动加载机制实现方法分析
Jan 10 PHP
Laravel+Intervention实现上传图片功能示例
Jul 09 PHP
php接口隔离原则实例分析
Nov 11 PHP
PHP接口类(interface)的定义、特点和应用示例
May 18 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防注
2007/01/15 PHP
php cli 小技巧
2013/06/03 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
js封装成插件的步骤方法
2017/09/11 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
python opencv实现运动检测
2018/07/10 Python
python绘制动态曲线教程
2020/02/24 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
应用电子专业学生的自我评价
2013/10/16 职场文书
工作的心得体会
2013/12/31 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
清洁工岗位职责
2015/02/13 职场文书
贷款收入证明格式
2015/06/24 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫