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 时间日期操作实战
Aug 26 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
kohana框架上传文件验证规则写法示例
Jul 14 PHP
PHP中exec与system用法区别分析
Sep 22 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
Jan 22 PHP
php获取访问者IP地址汇总
Apr 24 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 PHP
php ajax confirm 删除实例详解
Mar 06 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
如何删除多级目录
2006/10/09 PHP
PHP HTML代码串截取代码
2008/12/29 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
js右键菜单效果代码
2007/07/21 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
PyQt5实现简易计算器
2020/05/30 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
地理科学专业毕业生求职信
2013/10/15 职场文书
初中生学习生活的自我评价
2013/11/20 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
土建施工员岗位职责
2014/07/16 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
业务内勤岗位职责
2015/04/13 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python