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的header和asp中的redirect比较
Oct 09 PHP
聊天室php&amp;mysql(六)
Oct 09 PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
Aug 21 PHP
PHP实现异步调用方法研究与分享
Oct 27 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
php之XML转数组函数的详解
Jun 07 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
destoon安装出现Internal Server Error的解决方法
Jun 21 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
PHP实现适用于文件内容操作的分页类
Jun 15 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 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 error_log 函数的使用
2009/04/13 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
zbar解码二维码和条形码示例
2014/02/07 Python
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
10款最好的Python开发编辑器
2019/07/03 Python
Django视图扩展类知识点详解
2019/10/25 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
this关键字的作用
2016/01/30 面试题
上学迟到的检讨书
2014/01/11 职场文书
服装创业计划书范文
2014/02/05 职场文书
企业后勤岗位职责
2014/02/28 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang