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下实现折线图效果的代码
Apr 28 PHP
PHP 读取大文件的X行到Y行内容的实现代码
Jun 24 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
phpphp图片采集后按原路径保存图片示例
Feb 18 PHP
CI(CodeIgniter)框架介绍
Jun 09 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
PHP实现的进度条效果详解
May 03 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
Nov 25 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 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
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
php实现点击可刷新验证码
2015/11/07 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
JS变量及其作用域
2017/03/29 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
个人自我鉴定范文
2013/10/04 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
实习推荐信格式模板
2015/03/27 职场文书
电台广播稿范文
2015/08/19 职场文书
小学教师教学反思
2016/02/24 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
python for循环赋值问题
2021/06/03 Python
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
vue实力踩坑之push当前页无效
2022/04/10 Vue.js
Python  lambda匿名函数和三元运算符
2022/04/19 Python
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers