PHP spl_autoload_register实现自动加载研究


Posted in PHP onDecember 06, 2011

这里通过一个实验谈谈这个函数的部分特征。

函数原型
bool spl_autoload_register ([ callback $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )

版本兼容
PHP 5 >= 5.1.2

实验过程
第一步,使用spl_autoload_register()函数注册load()方法

<?php 
function load(){ 
require_once 'lib.php'; 
} 
spl_autoload_register('load'); 
?>

其中lib.php文件代码如下

<?php 
class className{ 
function method(){ 
echo 'a method in class'; 
} 
} function onlyMethod(){ 
echo 'method only'; 
} 
?>

说明:lib.php文件为一个className类和一个onlyMethod函数

第二步,调用自动加载类

$class = new className(); 
$class->method(); 
onlyMethod();

输出:
a method in class
method only

说明:实例化className类,并调用类method()函数,同时调用onlyMethod()方法,输出正常,没有出现错误

第三步,直接调用函数

onlyMethod();

说明:没有实例化类,直接调用lib.php文件中的onlyMethod()函数
输出:
Fatal error: Call to undefined function onlyMethod() in '...(省略路径)'

第四步,实例化className类,再直接调用

$class = new className();
onlyMethod();

输出:method only

从上面的四步实验发现,如果加载的文件包含函数,使用则一定需要实例化里面的类,否则就产生异常情况 Call to undefined function错误,具体在使用中要注意一下。

参与资料:spl_autoload_register

PHP 相关文章推荐
用定制的PHP应用程序来获取Web服务器的状态信息
Oct 09 PHP
投票管理程序
Oct 09 PHP
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
php 计算两个时间戳相隔的时间的函数(小时)
Dec 18 PHP
PHP 创建文件(文件夹)以及目录操作代码
Mar 04 PHP
PHP的autoload机制的实现解析
Sep 15 PHP
PHP中if和or运行效率对比
Dec 12 PHP
Symfony的安装和配置方法
Mar 17 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
php中yii框架实例用法
Dec 22 PHP
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
Dec 06 #PHP
PHP中文件缓存转内存缓存的方法
Dec 06 #PHP
php urlencode()与urldecode()函数字符编码原理详解
Dec 06 #PHP
PHP中实现中文字符进制转换原理分析
Dec 06 #PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 #PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 #PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
Dec 05 #PHP
You might like
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
php 实现进制相互转换
2016/04/07 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
玩具公司的创业计划书
2013/12/31 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
村党组织公开承诺书
2015/04/30 职场文书