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 simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
php中chdir()函数用法实例
Nov 13 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
PHP安装memcached扩展笔记
May 28 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
PHP实现的贪婪算法实例
Oct 17 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 PHP
laravel-admin的多级联动方法
Sep 30 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
PHPThumb图片处理实例
2014/05/03 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
python实现简单多人聊天室
2018/12/11 Python
关于python3中setup.py小概念解析
2019/08/22 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
保护环境建议书100字
2014/05/13 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android