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 相关文章推荐
php调用mysql存储过程
Feb 14 PHP
浅谈PHP 闭包特性在实际应用中的问题
Oct 30 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
input file获得文件根目录简单实现
Apr 26 PHP
编写安全 PHP应用程序的七个习惯深入分析
Jun 08 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
php自定义的格式化时间示例代码
Dec 05 PHP
PHP include任意文件或URL介绍
Apr 29 PHP
PHP SPL标准库之SplFixedArray使用实例
May 12 PHP
php数组合并与拆分实例分析
Jun 12 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
JavaScript基本对象
2007/01/11 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
JQuery从头学起第一讲
2010/07/04 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
python实现可变变量名方法详解
2019/07/01 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
Python远程linux执行命令实现
2020/11/11 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
Ado与Ado.net的相同与不同
2014/12/08 面试题
老师的检讨书
2014/02/23 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
物理教育专业求职信
2014/06/25 职场文书
五四演讲稿范文
2014/09/03 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
合作协议书模板2014
2014/09/26 职场文书
成本会计实训报告
2014/11/05 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
教师远程研修感悟
2015/11/18 职场文书
远程教育学习心得体会
2016/01/23 职场文书
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang