深入PHP autoload机制的详解


Posted in PHP onJune 09, 2013

在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便 利。这 也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可。
下面是一个实际的例 子:

/* Person.class.php */
<?php
class Person {
var $name, $age;
function __construct ($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
?>
/* no_autoload.php */
<?php
require_once (”Person.class.php”);
$person = new Person(”Altair”, 6);
var_dump ($person);
?>

在这个例子中,no-autoload.php文件需要使用Person类,它使用了require_once将其包含,然后就可以直接使用Person类来实例化一个对象。

但 随着项目规模的不断扩大,使用这种方式会带来一些隐含的问题:如果一个PHP文件需要使用很多其它类,那么就需要很多的require/include语 句,这样有可能会造成遗漏或者包含进不必要的类文件。如果大量的文件都需要使用其它的类,那么要保证每个文件都包含正确的类文件肯定是一个噩梦。

PHP5为这个问题提供了一个解决方案,这就是类的自动装载(autoload)机制。autoload机制可以使得PHP程序有可能在使用类时才自动包含类文件,而不是一开始就将所有的类文件include进来,这种机制也称为lazy loading。

下面是使用autoload机制加载Person类的例子:

/* autoload.php */
<?php
function __autoload($classname) {
require_once ($classname . “class.php”);
}
$person = new Person(”Altair”, 6);
var_dump ($person);
?>

PHP 相关文章推荐
Php注入点构造代码
Jun 14 PHP
php自动适应范围的分页代码
Aug 05 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
PHP生成UTF8文件的方法
May 15 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
windows下配置php5.5开发环境及开发扩展
Dec 25 PHP
PHP实现简单数字分页效果
Jul 26 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
php简单截取字符串代码示例
Oct 19 PHP
PHP+MySQL实现模糊查询员工信息功能示例
Jun 01 PHP
php实例化一个类的具体方法
Sep 19 PHP
定义php常量的详解
Jun 09 #PHP
基于php冒泡排序算法的深入理解
Jun 09 #PHP
深入apache host的配置详解
Jun 09 #PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 #PHP
基于PHP CURL用法的深入分析
Jun 09 #PHP
探讨PHP使用eAccelerator的API开发详解
Jun 09 #PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 #PHP
You might like
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php for 循环使用的简单实例
2016/06/02 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
Python实现模拟登录及表单提交的方法
2015/07/25 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
Python中多线程的创建及基本调用方法
2016/07/08 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
使用python实现飞机大战游戏
2020/03/23 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
校运会广播稿100字
2014/01/27 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
导师评语大全
2014/04/26 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
多媒体教室标语
2014/06/26 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
学前教育见习总结
2015/06/23 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python
python数字图像处理:图像的绘制
2022/06/28 Python