数据结构
SplDoublyLinkedList - 该SplDoublyLinkedList类提供了一个双向链表的主要功能
SplStack - 该SplStack类提供了一种使用双向链表实现栈的主要功能
SplQueue - 该SplQueue类提供了一种使用双向链表实现队列的主要功能
SplHeap - 该SplHeap类提供了堆的主要功能
SplMaxHeap - 该SplMaxHeap类提供了堆的主要功能,保持最大的顶部
SplMinHeap - 该SplMinHeap类提供了堆的主要功能,保持最低限度的顶部
SplPriorityQueue - 该SplPriorityQueue类提供了优先队列的主要功能,采用了最大堆实现
SplFixedArray - 该SplFixedArray类提供阵列的主要功能。一个SplFixedArray和正常PHP数组之间的主要区别在于,SplFixedArray长度是固定的,并允许范围为指标内的整数。的优点在于,它允许较快的数组实现
SplObjectStorage - 该SplObjectStorage类从对象到的数据提供地图或忽略的数据,一个对象集。此双用途可以是在涉及需要唯一地识别物体的许多情况下是有用的 迭代器
AppendIterator - 这个迭代器能陆续遍历几个迭代器
ArrayIterator - 这个迭代器允许在遍历数组和对象时删除和更新值与键
CachingIterator - 这个对象支持对另一个迭代器缓存的迭代
CallbackFilterIterator - 返回过滤器接口类
DirectoryIterator - 该DirectoryIterator类提供了查看文件系统目录内容的简单接口
EmptyIterator - 空迭代器
FilesystemIterator - 文件系统迭代
FilterIterator - 这个抽象类的遍历并过滤出不想要的值.这个类应该被实现了迭代过滤器的类继承 FilterIterator::accept()方法必须被子类实现.
GlobIterator - 遍历一个文件系统行为类似于 glob()
InfiniteIterator - 无限迭代器允许一个无限循环访问迭代器,而无需在到达其最终手动倒带迭代器
IteratorIterator - 这个迭代器封装允许任何转换即是可遍历到一个Iterator。要明白,没有实现迭代大多数类都有理由,最有可能的,他们不允许完整迭代器的功能集是很重要的。如果是这样,应提供技术,以防止误操作,否则指望异常或致命错误
LimitIterator - LimitIterator类允许遍历一个 Iterator 的限定子集的元素
MultipleIterator - 其依次遍历所有连接迭代的迭代器
NoRewindIterator - 这个迭代器无法倒带
ParentIterator - 这个扩展FilterIterator允许使用RecursiveIteratorIterator递归迭代,只显示那些有子元素的
RecursiveArrayIterator - 该迭代器允许未设置和修改值和键在遍历数组和对象以相同的方式为ArrayIterator。另外,可以遍历当前重复条目
RecursiveCachingIterator - 该RecursiveCachingIterator类
RecursiveCallbackFilterIterator - 该RecursiveCallbackFilterIterator类
RecursiveDirectoryIterator - 该RecursiveDirectoryIterator提供一个接口对文件系统的目录遍历递归
RecursiveFilterIterator - 这个抽象迭代器过滤掉不需要的值了RecursiveIterator。此类应扩展以实现自定义过滤器。递归FilterIterator:: accept()方法必须在子类实现。
RecursiveIteratorIterator - 可用于通过递归迭代器进行迭代
RecursiveRegexIterator - 这种递归迭代器可以通过正则表达式过滤另一个递归迭代器
RecursiveTreeIterator - 允许迭代过RecursiveIterator生成一个ASCII图形树
RegexIterator - 这种迭代器可以用于过滤基于正则表达式的另一个迭代器 接口
Countable - 类实现 Countable 可被用于 count() 函数.
OuterIterator - 实施OuterIterator类可用于遍历迭代器
RecursiveIterator - 实施RecursiveIterator类可用于递归迭代迭代器
SeekableIterator - 查找迭代器 异常
BadFunctionCallException - 如果回调指的是未定义的功能或抛出异常如果某些参数丢失
BadMethodCallException - 如果回调是指一个未定义的方法或抛出异常如果某些参数丢失
DomainException - 如果值不符合规定的有效数据域的异常
InvalidArgumentException - 如果一个参数是预期的类型不抛出异常
LengthException - 如果长度为无效异常抛出
LogicException - 异常表示程序逻辑错误。这种异常应直接导致在你的代码修复
OutOfBoundsException - 如果值不是一个有效的密钥抛出异常。这表示不能在编译时检测到错误
OutOfRangeException - 当被要求非法索引抛出异常。这表示应该在编译时检测到错误
OverflowException - 添加元素,以一个完整的容器时抛出异常
RangeException - 抛出异常程序执行期间,指示范围内的误差。通常,这意味着有比下溢/溢出以外的算术错误。这是DomainException的运行时版本
RuntimeException的 - 如果发生只能在运行时发现了一个错误的异常
UnderflowException - 一个空的容器上执行无效操作时,比如移除元素抛出异常
UnexpectedValueException - 如果值不以一组值相匹配的异常。这通常发生在一个函数调用另一个函数,并期望返回值是一个某种类型或价值不包括算术或缓冲相关的错误 SPL函数
class_implements - 返回指定的类实现的所有接口。
class_parents - 返回指定类的父类。
class_uses - 返回给定类使用的特质
iterator_apply - 为迭代器中每个元素调用一个用户自定义函数
iterator_count - 计算迭代器中元素的个数
iterator_to_array - 将迭代器中的元素拷贝到数组
spl_autoload_call - 尝试调用所有已注册的__autoload()函数来装载请求类
spl_autoload_extensions - 注册并返回spl_autoload函数使用的默认文件扩展名。
spl_autoload_functions - 返回所有已注册的__autoload()函数。
spl_autoload_register - 注册给定的函数作为__autoload的实现
spl_autoload_unregister - 注销已注册的__autoload()函数
spl_autoload - __autoload()函数的默认实现
spl_classes - 返回所有可用的SPL类
spl_object_hash - 返回指定对象的哈希ID 文件处理
SplFileInfo - 该SplFileInfo类提供了一个高层次的面向对象的接口信息,单个文件
SplFileObject - SplFileObject类为文件提供了一个面向对象接口.
SplTempFileObject - 该SplTempFileObject类提供了一个临时文件的面向对象的接口 各种类及接口
ArrayObject的 - 这个类允许对象的数组
SplObserver - 该SplObserver接口用于一起SplSubject实现观察者设计模式
SplSubject - 该SplSubject接口用于一起SplObserver实现观察者设计模式

/*
* SplDoublyLinkedList
*
* SplDoublyLinkedList ::add - 添加/插入新值指定索引处
SplDoublyLinkedList ::bottom - 在从双重链接列表的开头的节点窥视(或翻译为吧指针移到底部,即为双向链表所以是按照当前你处理的方法来移动到底部)
SplDoublyLinkedList :: __construct - 构造一个新的双向链表
SplDoublyLinkedList ::count - 计算在双向链表元素的数量。
SplDoublyLinkedList :: current - 返回当前数组节点值
SplDoublyLinkedList :: getIteratorMode - 设置返回迭代的方式
SplDoublyLinkedList ::isEmpty - 检查是否双向链表为空。
SplDoublyLinkedList ::key - 返回当前节点索引
SplDoublyLinkedList ::next - 移动到下一个节点
SplDoublyLinkedList :: offsetExists - 返回请求$index是否存在
SplDoublyLinkedList :: offsetGet - 在指定的$index返回值
SplDoublyLinkedList :: offsetSet - 设置在指定的$index 到$newval值
SplDoublyLinkedList :: offsetUnset - 在指定$index取消将值
SplDoublyLinkedList ::pop - 从双向链表的末尾压出一个节点
SplDoublyLinkedList ::prev - 移动到前一个条目
SplDoublyLinkedList ::push - 在双向链表的末尾压入一个节点
SplDoublyLinkedList :: rewind - 倒迭代器回到起点
SplDoublyLinkedList ::serialize - 序列化存储
SplDoublyLinkedList :: setIteratorMode - 设置迭代的方式
SplDoublyLinkedList ::shift - 从双向链表的开始压出(移除)一个节点
SplDoublyLinkedList ::top - 从双向链表的最后节点偷窥
SplDoublyLinkedList ::unserialize - Unserializes存储
SplDoublyLinkedList ::unshift - 预先考虑双向链开始压入(移入)一个节点
SplDoublyLinkedList ::valid - 检查是否双向链表中是否有更多的节点
*
*
*/

$list = new SplDoublyLinkedList();
$list->push('a');
$list->push('b');
$list->push('c');
$list->push('d');

$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
for ($list->rewind(); $list->valid(); $list->next()) {
echo $list->current()."\n";
}

php SPL学习的更多相关文章

  1. SPL学习 迭代器

    主要学习内容: 慕课网的spl视频教程 阮一峰SPL学习笔记 http://www.ruanyifeng.com/blog/2008/07/php_spl_notes.html SPL类详解 http ...

  2. u-boot spl 学习总结

    什么是SPL? SPL(secondary program loader)是一个十分小的bin文件,它是用来引导主u-boot文件.对于一些SRAM很小的SOC,无法一次性加载ROM中的bootloa ...

  3. 【Linux系列汇总】小白博主的嵌入式Linux实战快速进阶之路(持续更新)

    我把之前在学习嵌入式Linux和工作中遇到问题和相关经验等,一起整理到这里,方便自己查阅和学习,温故而知新,如果能帮助到您,请帮忙点个赞: 本文的宗旨 嵌入式Linux 的项目通常需要一个团队来开发, ...

  4. php SPL标准库iterator和ArrayAccess的学习

    最近在补充学习php基础的时候看到了spl的介绍,学习了一下iterator和arrayAccess的使用,iterator主要是对象的迭代,一般可以用在容器里面,或者工厂模式里面,最常见的应用场景就 ...

  5. SPL接口学习总结

    迭代器接口描述(接口在C里定义,这只是描述) interface Iterator { public function current(); public function key(); public ...

  6. u-boot 学习系列 1 - SPL

    u-boot这个东西从自我N年前使用到现在,变化好多,今天开始重新研究下,本系列的研究都是基于BeagleBoneBlack(bbb)开发板和 u-boot v201801版本的. SPL介绍 在源代 ...

  7. 【夯实PHP基础】PHP标准库 SPL

    PHP SPL笔记 这几天,我在学习PHP语言中的SPL. 这个东西应该属于PHP中的高级内容,看上去很复杂,但是非常有用,所以我做了长篇笔记.不然记不住,以后要用的时候,还是要从头学起. 由于这是供 ...

  8. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  9. php学习笔记2016.1

    基本类型    PHP是一种弱类型语言.      PHP类型检查函数   is_bool()    is_integer()  is_double()  is_string()   is_objec ...

随机推荐

  1. express-12 Cookie与会话

    简介 HTTP是无状态协议.当浏览器中加载页面,然后转到同一网站的另一页面时,服务器和浏览器都没有任何内在的方法可以认识到,这是同一浏览器访问同一网站.换一种说法,Web工作的方式就是在每个HTTP请 ...

  2. sed 字符串替换

    1. sed替换的基本语法为: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义. 2. 单引号” ‘ ’”是没有办法用反 ...

  3. Android annotations REST

    使用前: public class BookmarksToClipboardActivity extends Activity { BookmarkAdapter adapter; ListView ...

  4. asp.net mvc下的多语言方案 包含Html,Javascript和图片

    在网上查阅了众多方案,觉得路过秋天的方案 解耦性比较好,可以不使用微软的Resource文件,而是将所有的词汇放入在一个txt的词典之中,便于维护. 步骤如下: 1)在整个程序的入口处global.a ...

  5. static的本质

    通过反编译发现,static的本质是abstract sealed.因此,无法继承System.Math类,因为它是static的.

  6. GSM 短信相关AT指令(转)

    // AT+CSMS 选择消息业务AT+CSMS=0 // SMS 的AT 命令兼容GSM 07.05 Phase 2AT+CSMS=1 // SMS 的AT 命令兼容GSM 07.05 Phase ...

  7. Docker1.12 新增swarm集群

    在Docker1.12新版本中,一个新增加的功能点是swarm集群,通过docker命令可以直接实现docker-engine相互发现,并组建成为一个容器集群.有关集群的docker命令如下: (1) ...

  8. 移位运算符(JAVA)

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>     :     右移运算符,num >&g ...

  9. [LintCode] Intersection of Two Arrays II 两个数组相交之二

    Given two arrays, write a function to compute their intersection.Notice Each element in the result s ...

  10. Application中捕获APP中的全局异常

    package com.example.administrator.mystudent; import android.app.Application; import android.util.Log ...