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 相关文章推荐
function.inc.php超越php
Dec 09 PHP
PHP curl 获取响应的状态码的方法
Jan 13 PHP
php $_SERVER windows系统与linux系统下的区别说明
Feb 14 PHP
PHP向浏览器输出内容的4个函数总结
Nov 17 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 PHP
PHP使用fopen与file_get_contents读取文件实例分享
Mar 04 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
PHP利用DWZ.CN服务生成短网址
Aug 11 PHP
Laravel ORM 数据model操作教程
Oct 21 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 PHP
PHP项目多语言配置平台实现过程解析
May 18 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
海贼王:最美的悬赏令!
2020/03/02 日漫
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
一个JS翻页效果
2007/07/23 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
分享一个常用的Python模拟登陆类
2015/03/29 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
python 读取、写入txt文件的示例
2020/09/27 Python
python爬虫如何解决图片验证码
2021/02/14 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
个性大学生自我评价
2013/12/04 职场文书
干部考核评语
2014/04/29 职场文书
化工操作工岗位职责
2014/04/29 职场文书
会计学习心得体会
2014/09/09 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
java如何实现socket连接方法封装
2021/09/25 Java/Android
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript