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字符串的连接的简单实例
Dec 30 PHP
PHP防范SQL注入的具体方法详解(测试通过)
May 09 PHP
php的dl函数用法实例
Nov 06 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
PHP模块memcached使用指南
Dec 08 PHP
php关联数组快速排序的方法
Apr 17 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
Yii2使用swiftmailer发送邮件的方法
May 03 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
PHP生成推广海报的方法分享
Apr 22 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 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
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
JS中的三个循环小结
2017/06/20 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
[01:31]完美与DOTA2历程
2014/07/31 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
Python里隐藏的“禅”
2014/06/16 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
Hibernate持久层技术
2013/12/16 面试题
民生工程实施方案
2014/03/22 职场文书
综治工作心得体会
2014/09/11 职场文书
个人整改措施书面材料
2014/10/24 职场文书
安全先进班组材料
2014/12/26 职场文书
匿名检举信范文
2015/03/02 职场文书
小学感恩主题班会
2015/08/12 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
详解Redis瘦身指南
2021/05/26 Redis
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js