我想问下,PHP5 提供的SPL有什么好处,以前写个array就可以解决,为什么现在非要包装一个类呢?

比如遍历目录这段代码,请问SPL比传统代码好在哪呢?

SPL实现getInnerIterator();

if ($item->isFile() &&

in_array(pathinfo($item->getFilename(), PATHINFO_EXTENSION), $this->ext)) {

return TRUE;

}

}

}

// 实例化

foreach (new RecursiveFileFilterIterator('D:/history') as $item) {

echo $item . PHP_EOL;

}

传统方法:

回复内容:

我想问下,PHP5 提供的SPL有什么好处,以前写个array就可以解决,为什么现在非要包装一个类呢?

比如遍历目录这段代码,请问SPL比传统代码好在哪呢?

SPL实现getInnerIterator();

if ($item->isFile() &&

in_array(pathinfo($item->getFilename(), PATHINFO_EXTENSION), $this->ext)) {

return TRUE;

}

}

}

// 实例化

foreach (new RecursiveFileFilterIterator('D:/history') as $item) {

echo $item . PHP_EOL;

}

传统方法:

抽象,外部代码可以根据 FilterIterator 来操作,不需要管是否是操作文件系统,比如你以后可能会将文件系统转换为数据库。

项目可能出现的演变情况:

RecursiveFileFilterIterator => RecursiveDatabaseFilterIterator => RecursiveMemoryFilterIterator

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php spl的优势,PHP SPL核心库相对以前有什么好处嘛?相关推荐

  1. AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码

    目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告 AIR32F103(二) Linux环境和LibOpenCM3项目模板 AIR32F103(三) Linux环境基于标准外 ...

  2. ZStack源码剖析之核心库鉴赏——FlowChain

    本文首发于泊浮目的专栏:https://segmentfault.com/blog... 前言 在ZStack(或者说产品化的IaaS软件)中的任务通常有很长的执行路径,错误可能发生在路径的任意一处. ...

  3. sentinel 端口_双剑合璧Nacos结合Sentinel实现流量安全控制(一):Sentinel核心库和控制台...

    Alibaba Sentinel 是一款高性能且轻量级的流量控制.熔断降级解决方案.是面向分布式服务架构的高可用流量控制组件. Sentinel 官网:https://sentinelguard.io ...

  4. Kotlin协程核心库分析-5 Job异常处理器注意点

    本章我们简单探讨一下异常处理: 我们知道协程传入CoroutineExceptionHandler对象即可捕获异常,那么对于子协程是否适用呢? fun main() {val eChild = Cor ...

  5. CSCD.中国科学引文数据库核心库和引文库来源期刊列表(2007年-2008年)

    CSCD.中国科学引文数据库核心库和引文库来源期刊列表(2007年-2008年) (按英文刊名字顺和中文刊名拼音音序排序) 说 明 中国科学引文数据库分为核心库和扩展库,数据库的来源期刊每两年进行评选 ...

  6. 一系列令人敬畏的.NET核心库,工具,框架和软件

    内容 一般 框架,库和工具 API 应用框架 应用模板 身份验证和授权 Blockchain 博特 构建自动化 捆绑和缩小 高速缓存 CMS 代码分析和指标 压缩 编译器,管道工和语言 加密 数据库 ...

  7. 一万个bug——安装阿里云SDK核心库遇到的问题(涉及Rust、cryptography、openssl等的安装)

    本文涉及Rust.cryptography.openssl等的安装 ----解决方式都是硬方式(仅凭报错信息分析,没有技术分析,按需参考) 其中: Rust 安装时遇到的问题在1-5 cryptogr ...

  8. JAVA学习笔记—JAVA SE(四)JAVA核心库类(下)

    文章目录 四.JAVA核心库类(下) 1. 异常机制和File类 1.1 异常机制 1.1.1 基本概念 1.1.2 异常的分类 1.1.3 异常的避免 1.1.4 异常的捕获 1.1.5 异常的抛出 ...

  9. 核心库aud$过大清理

    *险核心库aud$过大,需要清理,DB版本为11.2.0.4,由于保险行业需要审计信息至少保留半年,所以不能直接对aud$进行truncate清理,故需要使用ORACLE的清理方法. 点击(此处)折叠 ...

最新文章

  1. redhat7防火墙关闭_RedHat Enterprise Linux 7关闭防火墙方法
  2. Android中ViewPager+Fragment的基本使用
  3. nrf51822笔记之密码配对过程梳理
  4. 如何配置三层交换机创建VLAN 3
  5. 2021“MINIEYE杯”中国大学生算法设计超级联赛(10)Pty loves string(Border+二维数点)
  6. leetcode3 无重复字符最长子串
  7. 关于《详解》第12.1节按键驱动的进一步阐述
  8. Spring Boot静态资源映射规则
  9. 【clickhouse】clickhouse配置多块磁盘
  10. Docker使用概览图
  11. 零基础带你学习MySQL—数学函数(十四)
  12. 关于把类放到结构体中
  13. linux实现普通用户只允许使用部分命令
  14. 很牛的求职经历(转载)
  15. typora 公式对齐_让 Markdown 写作更简单 Typora 完全使用指南
  16. 使用MediaRecorder录制音频和视频(Camera1)
  17. 南阳oj入门题-兰州烧饼
  18. python读取.nii.gz文件并使用nibabel展示医学图片
  19. java 加密 压缩_如何用java 将文件加密压缩为zip文件.
  20. easypoi导入excel实践方法:

热门文章

  1. win10不能预览图片
  2. TENSORFLOW PROCESS FINISHED WITH EXIT CODE -1073741819 (0XC0000005)
  3. pyqt5动态删除控件问题
  4. mnn python 笔记
  5. cuda runtime error (59) : device-side assert triggered when running transfer_learning_
  6. logical_not torch
  7. face track
  8. 脊回归(Ridge Regression) 岭回归
  9. CheXNet 肺炎
  10. faiss简介及示例