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获取网络上文件
Oct 09 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
基于php 随机数的深入理解
Jun 05 PHP
PHP在网页中动态生成PDF文件详细教程
Jul 05 PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 PHP
在Win7 中为php扩展配置Xcache
Oct 08 PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
浅谈PHP的反射机制
Dec 15 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
PHP7下协程的实现方法详解
Dec 17 PHP
PHP实现动态创建XML文档的方法
Mar 30 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数组保存文本与文本反编成数组实例
2014/11/13 PHP
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
python动态性强类型用法实例
2015/05/09 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
交通法规咨询中心工作职责
2013/11/27 职场文书
挂职思想汇报
2013/12/31 职场文书
小学生春游活动方案
2014/08/20 职场文书
小学语文教学反思范文
2016/03/03 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python