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 array_multisort()函数的使用札记
Jul 03 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
Nov 01 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 PHP
PHP实现微信提现功能(微信商城)
Nov 21 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 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
ThinkPHP登录功能的实现方法
2014/08/20 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
Python模块学习 datetime介绍
2012/08/27 Python
Python 列表list使用介绍
2014/11/30 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
Python如何实现FTP功能
2020/05/28 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
新学期开学寄语2016
2015/12/04 职场文书
如何书写邀请函?
2019/06/24 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
PHP正则表达式之RCEService回溯
2022/04/11 PHP
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript