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 相关文章推荐
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
Jun 25 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
php可变长参数处理函数详解
Feb 22 PHP
如何优雅的使用 laravel 的 validator验证方法
Nov 11 PHP
PhpStorm配置Xdebug调试的方法步骤
Feb 02 PHP
php实现根据身份证获取精准年龄
Feb 26 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中开启gzip压缩的2种方法
2015/01/31 PHP
js函数般调用正则
2008/04/08 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
解决python3输入的坑——input()
2020/12/05 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
英国工具中心:UK Tool Centre
2017/07/10 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
信息工程学院毕业生推荐信
2013/11/05 职场文书
工作经验交流材料
2014/12/30 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
郭明义电影观后感
2015/06/08 职场文书
运动会报道稿大全
2015/07/23 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
用python画城市轮播地图
2021/05/28 Python
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python