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 数组动态添加实现代码(最土团购系统的价格排序)
Dec 30 PHP
PHP采集腾讯微博的实现代码
Jan 19 PHP
解析posix与perl标准的正则表达式区别
Jun 17 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
php中in_array函数用法分析
Nov 15 PHP
浅谈json_encode用法
Mar 05 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
Jan 08 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
Jan 09 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 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
PHP整合七牛实现上传文件
2015/07/03 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
Python中List.index()方法的使用教程
2015/05/20 Python
Python中is与==判断的区别
2017/03/28 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python实现批量注册网站用户的示例
2019/02/22 Python
详解python中list的使用
2019/03/15 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
Python实现验证码识别
2020/06/15 Python
Python列表推导式实现代码实例
2020/09/09 Python
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
美国乒乓球设备、配件和服装品牌:Killerspin
2020/06/07 全球购物
学生党员的自我评价范文
2014/03/01 职场文书
个人委托书怎么写
2014/04/04 职场文书
电影建国大业观后感
2015/06/01 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
MySQL基于索引的压力测试的实现
2021/11/07 MySQL
Go web入门Go pongo2模板引擎
2022/05/20 Golang