php SPL学习
数据结构
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学习的更多相关文章
- SPL学习 迭代器
主要学习内容: 慕课网的spl视频教程 阮一峰SPL学习笔记 http://www.ruanyifeng.com/blog/2008/07/php_spl_notes.html SPL类详解 http ...
- u-boot spl 学习总结
什么是SPL? SPL(secondary program loader)是一个十分小的bin文件,它是用来引导主u-boot文件.对于一些SRAM很小的SOC,无法一次性加载ROM中的bootloa ...
- 【Linux系列汇总】小白博主的嵌入式Linux实战快速进阶之路(持续更新)
我把之前在学习嵌入式Linux和工作中遇到问题和相关经验等,一起整理到这里,方便自己查阅和学习,温故而知新,如果能帮助到您,请帮忙点个赞: 本文的宗旨 嵌入式Linux 的项目通常需要一个团队来开发, ...
- php SPL标准库iterator和ArrayAccess的学习
最近在补充学习php基础的时候看到了spl的介绍,学习了一下iterator和arrayAccess的使用,iterator主要是对象的迭代,一般可以用在容器里面,或者工厂模式里面,最常见的应用场景就 ...
- SPL接口学习总结
迭代器接口描述(接口在C里定义,这只是描述) interface Iterator { public function current(); public function key(); public ...
- u-boot 学习系列 1 - SPL
u-boot这个东西从自我N年前使用到现在,变化好多,今天开始重新研究下,本系列的研究都是基于BeagleBoneBlack(bbb)开发板和 u-boot v201801版本的. SPL介绍 在源代 ...
- 【夯实PHP基础】PHP标准库 SPL
PHP SPL笔记 这几天,我在学习PHP语言中的SPL. 这个东西应该属于PHP中的高级内容,看上去很复杂,但是非常有用,所以我做了长篇笔记.不然记不住,以后要用的时候,还是要从头学起. 由于这是供 ...
- Yaf零基础学习总结5-Yaf类的自动加载
Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...
- php学习笔记2016.1
基本类型 PHP是一种弱类型语言. PHP类型检查函数 is_bool() is_integer() is_double() is_string() is_objec ...
随机推荐
- 指针与const
指向常量的指针,不能用于改变其所指对象的值. 指针的类型必须与所指对象的类型一致,但是有两个例外,第一种是允许令一个指向常量的指针指向一个非常量对象: double dra1 = 3.14; cons ...
- Hadoop 2.0安装以及不停集群加datanode
Hadoop2.0是对Hadoop1.0全面升级,针对Namenode单点问题,提出了HDFS Federation,让多个NameNode分管不同的目录进而实现访问隔离和横向扩展.诞生了通用的计算框 ...
- webvnc利器-noVNC集成实战
我们在做一个虚拟机管理平台,底层虚拟化使用KVM,我们希望在网页上操作虚拟机. 一开始用applet嵌在网页内实现webvnc,不过由于applet的在浏览器上运行安全性限制,我们需要一个新的方案.此 ...
- BZOJ3692 : 愚蠢的算法
两个函数相同等价于不存在长度为$3$的下降子序列. 先考虑随意填的部分,设$f[i][j]$表示考虑了$[i,n]$,下降子序列第$2$项的最小值的是这里面第$j$个的方案数,转移则考虑往序列里插数字 ...
- BZOJ3514 : Codechef MARCH14 GERALD07加强版
以边编号为权值 用Link-cut Tree维护最大生成树 对于新加的第i条边(u,v) a[i]表示当a[i]这条边加入后连通块个数会减少 若u==v则a[i]=m 若u与v不连通则连上,a[i]= ...
- wamp 2.5 开放访问权限和设置虚拟域名
开放访问权限 D:\wamp\bin\apache\apache2.4.9\conf 里的 httpd.conf 搜索www 把 Require local 改为 Require all gra ...
- Storm编译打包过程中遇到的一些问题及解决方法
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2013/11/30/som ...
- Android Drawable
1. Shape 属性: (1) solid ( 填充 ) 参数:android:color ( 填充的颜色 ) (2) gradient ( 渐变 ) 参数:android:startColor ( ...
- LightOJ 1245 数学题,找规律
1.LightOJ 1245 Harmonic Number (II) 数学题 2.总结:看了题解,很严谨,但又确实恶心的题 题意:求n/1+n/2+....+n/n,n<=2^31. ...
- 一个简单的零配置命令行HTTP服务器 - http-server (nodeJs)
http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) ...