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 IN_ARRAY 函数使用注意事项
Jul 24 PHP
PHP 小心urldecode引发的SQL注入漏洞
Oct 27 PHP
php检测图片木马多进制编程实践
Apr 11 PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 PHP
新手菜鸟必读:session与cookie的区别
Aug 22 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
php post大量数据时发现数据丢失问题解决方法
Jun 20 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 PHP
laravel添加角色和模糊搜索功能的实现代码
Jun 22 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中foreach循环中使用引用要注意的地方
2011/01/02 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
php绘制圆形的方法
2015/01/24 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
python动态网页批量爬取
2016/02/14 Python
python删除服务器文件代码示例
2018/02/09 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Python count函数使用方法实例解析
2020/03/23 Python
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
法律六进活动方案
2014/03/13 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
个人职业及收入证明
2014/10/13 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
实习协议书
2015/01/27 职场文书
教师继续教育反思周记
2015/06/25 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
高中生社会实践心得体会
2016/01/14 职场文书