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 相关文章推荐
PHP6 先修班 JSON实例代码
Aug 23 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
php 函数使用方法与函数定义方法
May 09 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
codeigniter中view通过循环显示数组数据的方法
Mar 20 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
PHP进程通信基础之信号
Feb 19 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
python pickle 和 shelve模块的用法
2013/09/16 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
什么是命名空间(NameSpace)
2015/11/24 面试题
大学应届生求职简历的自我评价
2013/10/08 职场文书
语文教学随笔感言
2014/02/18 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
个人务虚会发言材料
2014/10/20 职场文书
工作经历证明书范文
2014/11/02 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
内乡县衙导游词
2015/02/05 职场文书
民事代理词范文
2015/05/25 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
部分武汉产收音机展览
2022/04/07 无线电
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android