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 相关文章推荐
php5 mysql分页实例代码
Apr 10 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
php的XML文件解释类应用实例
Sep 22 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
Dec 10 PHP
iOS+PHP注册登录系统 PHP部分(上)
Dec 26 PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 PHP
php7 图形用户界面GUI 开发示例
Feb 22 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
js 单引号 传递方法
2009/06/22 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
九种原生js动画效果
2015/11/11 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
Python实现备份文件实例
2014/09/16 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
介绍一下Linux文件的记录形式
2012/04/18 面试题
财务工作个人求职的自我评价
2013/12/19 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
校车安全管理责任书
2015/05/11 职场文书
法定授权委托证明书
2015/06/18 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
Python实现视频中添加音频工具详解
2021/12/06 Python
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS