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
转PHP手册及PHP编程标准
Dec 17 PHP
简单PHP上传图片、删除图片实现代码
May 12 PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 PHP
php使用cookie实现记住登录状态
Apr 27 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
php实现查询功能(数据访问)
May 23 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
PHP实现计算器小功能
Aug 28 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
php的memcached客户端memcached
2011/06/14 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
python将视频转换为全字符视频
2019/04/26 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
python代码如何注释
2020/06/01 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
物流管理毕业生自荐信
2013/10/24 职场文书
业务员岗位职责
2013/11/16 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
预备党员转正考核材料
2014/06/03 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python
24年收藏2000多部退役军用电台
2022/02/18 无线电