PHP SPL标准库中的常用函数介绍


Posted in PHP onMay 11, 2015

PHP SPL标准库中提供了一些函数用来处理如自动加载、迭代器处理等。

spl_autoload_extensions()添加spl_autoload()可加载的文件扩展名
spl_autoload_register()注册函数到SPL __autoload函数栈中。

/*test1.php*/

<?php

class Test1

{

}

 

/*test2.lib.php*/

<?php

class Test2

{

}

 

/*test.php*/

<?php

//设置可加载类的文件扩展名

spl_autoload_extensions(".php,.inc.php,.class.php,.lib.php");

//设置include_path,autoload会在这些path中去寻找类文件,可通过PATH_SEPARATOR添加多个path

set_include_path(get_include_path().PATH_SEPARATOR.'libs/');

//不提供参数,默认实现函数是spl_autoload()

spl_autoload_register();

 

$test1 = new Test1();

$test2 = new Test2();

spl_autoload()它是__autoload()的默认实现,它会去include_path中加载文件(.php/.inc)

/*test1.php*/

<?php

class Test1

{

}

 

/*test.php*/

<?php

set_include_path(get_include_path().PATH_SEPARATOR.'libs/');

spl_autoload('test1');

$test1 = new Test1();

spl_autoload_call()调用所有spl_autoload_register注册函数来加载文件

/*test1.php*/

<?php

class Test

{

    public function getFilename()

    {

        echo 'test1.php';

    }

}

 

/*test2.lib.php*/

<?php

class Test

{

    public function getFilename()

    {

        echo 'test2.lib.php';

    }

}

 

/*test.php*/

<?php

 

function loader($classname)

{

    if($classname == 'Test1') {

        require __DIR__ . '/test1.php';

    }

    if($classname == 'Test2') {

        require __DIR__ . '/test2.lib.php';

    }

}

 

spl_autoload_register('loader');

spl_autoload_call('Test2');

 

 

$test = new Test();

$test->getFilename(); //test2.lib.php

其它SPL 函数介绍:
class_implements — 返回指定的类实现的所有接口。
class_parents — 返回指定类的父类。
class_uses — Return the traits used by the given class
iterator_apply — 为迭代器中每个元素调用一个用户自定义函数
iterator_count — 计算迭代器中元素的个数
iterator_to_array — 将迭代器中的元素拷贝到数组
spl_autoload_functions — 返回所有已注册的__autoload()函数
spl_autoload_unregister — 注销已注册的__autoload()函数
spl_classes — 返回所有可用的SPL类
spl_object_hash — 返回指定对象的hash id

如iterator相关函数使用:

$iterator  = new  ArrayIterator (array( 'recipe' => 'pancakes' ,  'egg' ,  'milk' ,  'flour' ));

 

print_r(iterator_to_array($iterator)); //将迭代器元素转化为数组

echo iterator_count($iterator); //计算迭代器元素的个数

print_r(iterator_apply($iterator, 'print_item', array($iterator)));//为迭代器每个元素调用自定义函数

 

 

function print_item(Iterator $iterator)

{

    echo  strtoupper ( $iterator -> current ()) .  "\n" ;

    return  TRUE ;

}
PHP 相关文章推荐
js下函数般调用正则的方法附代码
Jun 22 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
php简单获取目录列表的方法
Mar 24 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
Apr 18 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
php精度计算的问题解析
Jun 21 PHP
PHP实现rar解压读取扩展包小结
Jun 03 PHP
PHP中的类型约束介绍
May 11 #PHP
PHP SPL标准库之接口(Interface)详解
May 11 #PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 #PHP
PHP设计模式之适配器模式代码实例
May 11 #PHP
Mac环境下php操作mysql数据库的方法分享
May 11 #PHP
PHP设计模式之装饰者模式代码实例
May 11 #PHP
PHP超牛逼无限极分类生成树方法
May 11 #PHP
You might like
PHP个人网站架设连环讲(一)
2006/10/09 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
对Python中内置异常层次结构详解
2018/10/18 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
python实现网页录音效果
2020/10/26 Python
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
高中自我鉴定范文
2013/11/03 职场文书
情人节活动策划方案
2014/02/27 职场文书
医药营销个人求职信
2014/04/12 职场文书
党员志愿者活动方案
2014/08/28 职场文书
关于工作经历的证明书
2014/10/11 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
电频谱管理的原则是什么
2022/02/18 无线电