什么是SPL SPL是Standard PHP Library(PHP标准库)的缩写. 根据官方定义,它是"a collection of interfaces and classes that are meant to solve standard problems" SPL是用于解决典型问题(standard problems)的一组接口与类的集合. 但是,目前在使用中,SPL更多地被看作是一种使object(物体)模仿array(数组)行为的interfaces和classes.…
SplFixedArray主要是处理数组相关的主要功能,与普通php array不同的是,它是固定长度的,且以数字为键名的数组,优势就是比普通的数组处理更快. 类摘要 SplFixedArray implements Iterator , ArrayAccess , Countable { /* 方法 */ public __construct ([ int $size = 0 ] ) public int count ( void ) public mixed current ( void )…
PHP SPL SplObjectStorage是用来存储一组对象的,特别是当你需要唯一标识对象的时候. PHP SPL SplObjectStorage类实现了Countable,Iterator,Serializable,ArrayAccess四个接口.可实现统计.迭代.序列化.数组式访问等功能. 类摘要 SplObjectStorage implements Countable , Iterator , Serializable , ArrayAccess { /* 方法 */ publi…
堆(Heap)就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现.根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆.二叉堆还常用于排序(堆排序). 类摘要 abstract SplHeap implements Iterator , Countable { /* 方法 */ public __construct ( void ) abstract protected int compare ( mixed $value1 , mixed $valu…
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头取出.在优先队列中,元素被赋予优先级.当访问元素时,具有最高优先级的元素最先取出.优先队列具有最高级先出 (largest-in,first-out)的行为特征. 总结下来就是普通队列有先进先出原则,优先级队列有优先级高先出原则,这个优先级可以设置: 类摘要 // 1. 没有实现ArrayAccess接口,所以不能像数组那样操作: SplPriorityQueue implements Iterator , Countable {…
这两个类都是继承自SplDoublyLinkedList,分别派生自SplDoublyLinkedList的堆栈模式和队列模式:所以放在一起来介绍: 堆栈SplStack # 类摘要 SplStack extends SplDoublyLinkedList implements Iterator , ArrayAccess , Countable { /* 方法 */ __construct(void) // 重写了父类SplDoublyLinkedList,固定为堆栈模式,然后此处只需要传IT…
简述 双链表是一种重要的线性存储结构,对于双链表中的每个节点,不仅仅存储自己的信息,还要保存前驱和后继节点的地址. 类摘要 SplDoublyLinkedList implements Iterator , ArrayAccess , Countable { public __construct ( void ) public void add ( mixed $index , mixed $newval ) //双链表的头部节点 public mixed top ( void ) //双链表的…
我把SPL分为四个部分:Iterator,Classes,Datastructures,Function:而其中classes是就是做一些类的介绍(Iterator与Datastructures相关的类在各自文章内),在介绍这些类之前,先介绍几个接口: ArrayAccess(数组式访问)接口 http://php.net/manual/zh/class.arrayaccess.php#class.arrayaccess 只要实现了这个接口,就可以使得object像array那样操作.Array…
嵌套异常 了解SPL异常之前,我们先了解一下嵌套异常.嵌套异常顾名思义就是异常里面再嵌套异常,一个异常抛出,在catch到以后再抛出异常,这时可以通过Exception基类的getPrevious方法可以获得嵌套异常; <?php class DBException extends Exception { } class Database { /** * @var PDO object setup during construction */ protected $_pdoResource =…
Iterator界面 本段内容来自阮一峰老师再加自己的部分注解 SPL规定,所有部署了Iterator界面的class,都可以用在foreach Loop中.Iterator界面中包含5个必须部署的方法: * current() This method returns the current index's value. You are solely responsible for tracking what the current index is as the interface does…