PHP SPL(PHP 标准库)

PHP SPL(PHP 标准库)

.什么是SPL

SPL是用于解决典型问题(standard problems)的一组接口与类的集合。(出自:http://php.net/manual/zh/book.spl.php

SPLPHP 标准库(Standard PHP Library) ,从 PHP 5.0 起内置的组件和接口,且从 PHP5.3 已逐渐的成熟。SPL 在所有的 PHP5 开发环境中被内置,同时无需任何设置。

内容主要包括数据结构类,迭代器,异常类,SPL函数,还有一些接口。
数据结构类主要包括栈,队,堆,数组等基本数据结构php已经帮你封装好了,如果你要做数据处理可以直接拿来用,很方便。
迭代器是php在的新特征,在oop中使用很灵活,比如可以用来遍历对象数组。
异常类主要是把一些常见异常封装起来了,做成了接口,通俗将就是有个模版格式,你照着他的要求扩展即可。
SPL函数里面有个很重要的东西,spl_autoload_register(),在oop中用来实现自动加载。

.如何使用?

SPL提供了一组标准数据结构:

    双向链表

SplDoublyLinkedList

SplStack

SplQueue

    双链表是一种重要的线性存储结构,对于双链表中的每个节点,不仅仅存储自己的信息,还要保存前驱和后继节点的地址。

PHP SPL中的SplDoublyLinkedList类提供了对双链表的操作。

见附件spl_SplDoublyLinkedList.php

SplHeap 

SplMaxHeap

SplMinHeap

    堆(Heap)就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现。根节点最大的堆叫做最大堆或大根堆(SplMaxHeap),根节点最小的堆叫做最小堆或小根堆(SplMinHeap)。二叉堆还常用于排序(堆排序)

SplHeap类摘要如下:见附件spl_SplHeap.php

显然他是一个抽象类,最大堆(SplMaxHeap)和最小堆(SplMinHeap)就是继承它实现的。最大堆和最小堆并没有额外的方法。

简单实用,见附件spl_SplHeap_exe.php

优先队列

SplPriorityQueue

优先队列也是非常实用的一种数据结构,可以通过加权对值进行排序,由于排序在php内部实现,业务代码中将精简不少而且更高效。通过SplPriorityQueue::setExtractFlags(int  $flag)设置提取方式可以提取数据(等同最大堆)、优先级、和两者都提取的方式。

SplPriorityQueue类摘要如下:spl_SplPriorityQueue.php

简单使用,见附件:spl_SplPriorityQueue_exe.php

 阵列

SplFixedArray

SplFixedArray主要是处理数组相关的主要功能,与普通php array不同的是,它是固定长度的,且以数字为键名的数组,优势就是比普通的数组处理更快。通常情况下SplFixedArray要比php array快上20%~30%,所以如果你是处理巨大数量的固定长度数组,还是强烈建议使用。

SplFixedArray类摘要如下:spl_SplFixedArray.php

简单使用:spl_SplFixedArray_exe.php

映射

SplObjectStorage

用来存储一组对象的,特别是当你需要唯一标识对象的时候。

PHP SPL SplObjectStorage类实现了Countable,Iterator,Serializable,ArrayAccess四个接口。可实现统计、迭代、序列化、数组式访问等功能。

SplObjectStorage类摘要如下:spl_SplObjectStorage.php

简单使用:spl_SplObjectStorage_exe.php

猜你喜欢

转载自blog.csdn.net/php_hello_word/article/details/80240115