需求知识:

熟习和理解数据构造的基本观点

熟习PHP代码的编写

北京巨人学校php站在伟人的肩膀上写代码 Miss带你初识SPLPHP尺度类库 React

熟习面向工具的观点

什么是SPL

Standard PHP Library 标准PHP类库,官方定义:The standard PHP library(SPL)is a collection ofinterfaces and classes that are meant to solve common problems。
用于办理范例问题的一组接口与类的凑集。

范例问题:

数学建模/数据构造(办理数据怎么存储的问题)

元素遍历(数据怎么查看的问题)

常用方法的统一调用(通用方法,凑集的大小)

类定义在自动装载(让PHP程序自动适应大型项目的管理哀求,把功能实现分散到不同文件中)

包含的内容:

数据构造,根本接口,根本函数,迭代器,非常和其他。

SPL的常用数据构造

什么是数据构造?

数据构造是打算机存储,组织数据的办法。
数据构造是指相互之间存在一种或多种特定关系的数据元素的凑集。
办理的是软件开拓过程中的数据如何存储和表示的问题。

SPL供应哪些数据构造:

双向链表,堆栈,行列步队,堆,降序堆,升序堆,优先级行列步队,定长数组,工具容器。

双向链表:

代码测试:

测试代码

cmd命令走运行的结果

总结

堆栈(FILO first in last out):前辈后出,后进先出

实现方法:继续自SplDoublyLinkedList类的SplStack类

操作:

push(压入堆栈,存入)

pop(退出堆栈、取出)

代码部分

运行结果

行列步队:(FIFO first in first out)行列步队和堆栈刚好相反,前辈先出

实现方法:继续自SplDoublyLinkedList类的SplQueue类

操作:

enqueue(进入行列步队)

dequeue(退出行列步队)

SPL的常用迭代器

什么是迭代器?(Iterator接口定义)

通过某种统一的办法遍历链表或者数组中的元素的过程叫做迭代遍历,而这种统一的遍历哦工具我们叫做迭代器。

ArrayIterator:用于遍历数组

AppendIterator:能陆续遍历几个迭代器

MultipleIterator:用于把多个Iterator里面的数据和成为一个整体来访问

FilesystemIterator:能遍历文件系统

SPL接口简介

Countable:在自定义的类中也可以直接用count()

OuterIterator:如果想对迭代器进行一定的处理后再返回,可以用这个接口,IteratorIterator是OuterIterator的实现,扩展的时候可以直接继续IteratorIterator。

RecursiveIterator:可以对多层构造的迭代器进行迭代,比如遍历一棵树,可以所有具有层次构造特点的数据都可以用这个接口遍历,如文件夹。

关键方法:

hasChildren:判断当前节点是否含有子节点

getChildren:得到当前节点子节点的迭代器

SeekableIterator:可以通过seek()方法定位到凑集里面的某个特定的元素,参数从零开始打算

SPL函数的利用

什么是autoload?

为了初始化PHP中的类工具,须要通过一定的方法探求到类的定义。
常日情形下,类会定义在一个单独的文件中。
autoload便是PHP找到这些类的方法。

spl_autoload_extensions — 注册并返回spl_autoload函数利用的默认文件扩展名。

set_include_path — 设置 include_path 配置选项

get_include_path — 获取当前的 include_path 配置选项

spl_autoload_register — 注册给定的函数作为 __autoload 的实现

_autoload(); 自动加载类

自定义自动加载类时:

类载入的基本流程:

其他函数:

SPL的文件处理类库:

SplFileInfo:用于得到文件的基本信息,比如修正韶光,大小,目录等信息。

SplFileObiect:用于操作文件的内容,比如读取、写入