深入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在字符串中查找指定字符串并删除的代码
Oct 02 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
PHP防范SQL注入的具体方法详解(测试通过)
May 09 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
Fleaphp常见函数功能与用法示例
Nov 15 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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下几种删除目录的方法总结
2007/08/19 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
JavaScript中的其他对象
2008/01/16 Javascript
js获取视频时长代码
2014/04/10 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
ORACLE第二个十问
2013/12/14 面试题
2014年环保工作总结
2014/11/26 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
司机岗位职责范本
2015/04/10 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
redis三种高可用方式部署的实现
2021/05/11 Redis
angular异步验证器防抖实例详解
2022/03/31 Javascript