深入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+oracle 分页类
Oct 09 PHP
php中cookie的作用域
Mar 27 PHP
五个PHP程序员工具
May 26 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
Apr 29 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
织梦sitemap地图实时推送给百度的教程
Aug 03 PHP
php获取文件后缀的9种方法
Mar 22 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 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与SQL注入攻击[二]
2007/04/17 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
python复制文件代码实现
2013/12/23 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
python中JWT用户认证的实现
2020/05/18 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
《桃花心木》教学反思
2014/02/17 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
超市中秋节促销方案
2014/03/21 职场文书
爱我中华教学反思
2014/04/28 职场文书
初中学习计划书范文
2014/09/15 职场文书
公司出差管理制度范本
2015/08/05 职场文书
《正比例》教学反思
2016/02/23 职场文书