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 isset()与empty()的使用区别详解
Aug 29 PHP
用PHP写的基于Memcache的Queue实现代码
Nov 27 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
php中filter_input函数用法分析
Nov 15 PHP
PHP调用.NET的WebService 简单实例
Mar 27 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
Oct 15 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
Nov 11 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP 并发场景的几种解决方案
Jun 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
PHP MySql增删改查的简单实例
2016/06/21 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
javascript中UMD规范的代码推演
2018/08/29 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
python基础教程之Hello World!
2014/08/29 Python
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
Python面向对象类的继承实例详解
2018/06/27 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
django如何自己创建一个中间件
2019/07/24 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
函授毕业生的自我鉴定
2013/11/26 职场文书
金融专业个人求职信范文
2013/11/28 职场文书
销售会计工作职责
2013/12/02 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
小学班级标语口号大全
2015/12/26 职场文书
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫