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 - Html Transfer Code
Oct 09 PHP
如何利用php+mysql保存和输出文件
Oct 09 PHP
我的论坛源代码(九)
Oct 09 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
解析PHP提交后跳转
Jun 23 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
php mysql 封装类实例代码
Sep 18 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 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的计数器程序
2006/10/09 PHP
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
php抓取https的内容的代码
2010/04/06 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
PHP 裁剪图片
2021/03/09 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
python实现在控制台输入密码不显示的方法
2015/07/02 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
django admin 添加自定义链接方式
2020/03/11 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
幼儿园教师工作感言
2014/02/15 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
公司任命书模板
2014/06/06 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
施工安全协议书范本
2014/09/26 职场文书
党员剖析材料范文
2014/09/30 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
退休教师追悼词
2015/06/23 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
Java设计模式之代理模式
2022/04/22 Java/Android