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中将网址转换为超链接的函数
Sep 02 PHP
php中实现简单的ACL 完结篇
Sep 07 PHP
php笔记之:文章中图片处理的使用
Apr 26 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
laravel容器延迟加载以及auth扩展详解
Mar 02 PHP
PHP查询快递信息的方法
Mar 07 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
因str_replace导致的注入问题总结
Aug 08 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
解析strtr函数的效率问题
2013/06/26 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
php发送与接收流文件的方法
2015/02/11 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
vue - vue.config.js中devServer配置方式
2019/10/30 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
深入了解JS之作用域和闭包
2020/06/16 Javascript
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
Python3常见函数range()用法详解
2019/12/30 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
小学生国旗下演讲稿
2014/04/25 职场文书
售后服务承诺书怎么写
2014/05/21 职场文书
学生干部培训方案
2014/06/12 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python