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中cookie的作用域
Mar 27 PHP
php allow_url_include的应用和解释
Apr 22 PHP
PHP安全技术之 实现php基本安全
Sep 04 PHP
PHP删除非空目录的函数代码小结
Feb 28 PHP
PHP 类相关函数的使用详解
May 10 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
PHP自定义错误用法示例
Sep 28 PHP
php array_values 返回数组的值实例详解
Nov 17 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 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
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
python中去空格函数的用法
2014/08/21 Python
Python连接DB2数据库
2016/08/27 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
Python 读写文件的操作代码
2018/09/20 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
学校就业推荐信范文
2014/05/19 职场文书
养成教育经验材料
2014/05/26 职场文书
运动会广播稿100字
2015/08/19 职场文书