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 相关文章推荐
使用adodb lite解决问题
Dec 31 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
php实现的一个很好用HTML解析器类可用于采集数据
Sep 23 PHP
php操作mysql数据库的基本类代码
Feb 25 PHP
php有道翻译api调用方法实例
Dec 22 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
Sep 01 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
vue.js的安装方法
2017/05/12 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
利用js实现简易红绿灯
2020/10/15 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
TensorFlow实现卷积神经网络
2018/05/24 Python
Python3简单实现串口通信的方法
2019/06/12 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
为什么使用接口?
2014/08/13 面试题
学习两会精神心得范文
2014/03/17 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
运动会加油稿100字
2014/09/19 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
暑期社会实践证明书
2014/11/17 职场文书
英文感谢信格式
2015/01/21 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书