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 相关文章推荐
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
PHP中__get()和__set()的用法实例详解
Jun 04 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
解析MySql与Java的时间类型
Jun 22 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
php命令行用法入门实例教程
Oct 27 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
详解php伪造Referer请求反盗链资源
Jan 24 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
PHP文件与目录操作示例
2016/12/24 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
JavaScript 学习笔记(五)
2009/12/31 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
Python生成随机密码的方法
2017/06/16 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
对pandas处理json数据的方法详解
2019/02/08 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
金融专业应届生求职信
2013/11/02 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
公司文体活动总结
2015/05/07 职场文书
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis