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 socke 向指定页面提交数据
Jul 23 PHP
php 文本文件的读取效率
Feb 10 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
Jun 03 PHP
php异常处理使用示例
Feb 25 PHP
初识Laravel
Oct 30 PHP
php生成短域名函数
Mar 23 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
PHP中str_split()函数的用法讲解
Apr 11 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 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简单封装了一些常用JS操作
2007/02/25 PHP
教你如何使用php session
2013/10/28 PHP
php微信公众平台开发类实例
2015/04/01 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
Python collections模块实例讲解
2014/04/07 Python
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
戴森美国官网:Dyson美国
2016/09/11 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
师范应届生求职信
2013/11/15 职场文书
党员公开承诺事项
2014/03/25 职场文书
大一新生学期自我评价
2014/04/09 职场文书
妇联主席先进事迹
2014/05/18 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
致接力运动员加油稿
2015/07/21 职场文书
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫