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基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
php动态生成JavaScript代码
Mar 09 PHP
PHP-redis中文文档介绍
Feb 07 PHP
PHP中的替代语法简介
Aug 22 PHP
php简单实现发送带附件的邮件
Jun 10 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
php 根据自增id创建唯一编号类
Apr 06 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
Django 标签筛选的实现代码(一对多、多对多)
Sep 05 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文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
优化javascript的执行速度
2010/01/23 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
原生js实现轮播图
2017/02/27 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
python对列进行平移变换的方法(shift)
2019/01/10 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Python实现验证码识别
2020/06/15 Python
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
电气专业推荐信范文
2013/11/18 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
天网工程实施方案
2014/03/26 职场文书
公司承诺书怎么写
2014/05/24 职场文书
计划生育宣传标语
2014/06/21 职场文书
民用住房租房协议书
2014/10/29 职场文书
八年级上册语文教学计划
2015/01/22 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
MySQL数据库必备之条件查询语句
2021/10/15 MySQL