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 XML error parsing SOAP payload on line 1
Jun 17 PHP
使用PHP遍历文件夹与子目录的函数代码
Sep 26 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
PHP扩展开发入门教程
Feb 26 PHP
php返回相对时间(如:20分钟前,3天前)的方法
Apr 14 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
Yii2 rbac权限控制之菜单menu实例教程
Apr 28 PHP
PHP面相对象中的重载与重写
Feb 13 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
php workerman定时任务的实现代码
Dec 23 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/08/27 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
手把手教你vue-cli单页到多页应用的方法
2018/05/31 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
python中cPickle类使用方法详解
2018/08/27 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
Python实战之制作天气查询软件
2019/05/14 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
中专毕业生求职简历的自我评价
2013/10/21 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
简历里的自我评价范文
2014/02/24 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
黄石寨导游词
2015/02/05 职场文书
高中教师个人工作总结
2015/02/10 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
python自动计算图像数据集的RGB均值
2021/06/18 Python
java设计模式--七大原则详解
2021/07/21 Java/Android
如何通过cmd 连接阿里云服务器
2022/04/18 Servers