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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
PHP环境搭建最新方法
Sep 05 PHP
PHP获取网卡地址的代码
Apr 09 PHP
php MYSQL 数据备份类
Jun 19 PHP
Discuz 模板语句分析及知识技巧
Aug 21 PHP
PHP笔记之:基于面向对象设计的详解
May 14 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
PHP操作Redis常用技巧总结
Apr 24 PHP
laravel 多图上传及图片的存储例子
Oct 14 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分页函数示例代码分享
2014/02/24 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
python私有属性和方法实例分析
2015/01/15 Python
详解在Python中处理异常的教程
2015/05/24 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
详解Python3定时器任务代码
2019/09/23 Python
python pycharm的安装及其使用
2019/10/11 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
高中生活自我鉴定
2014/01/18 职场文书
工作岗位说明书模板
2014/05/09 职场文书
法制教育演讲稿
2014/09/10 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
党风廉政承诺书2016
2016/03/25 职场文书
2019求职信大礼包
2019/05/15 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS