SPL类
用途:对类,方法,属性,参数的提取生成文档;自动加载插件
实列化类同于new:
$ref = new ReflectionClass($classname);
$class = $ref->newInstance(); //相当于new $classname;
区别:new 出来的class,不能访问它的私有属性/方法,但反射就可以;
反射返回的对象是class的元数据对象(属性/方法),而不是类本身
#SPL标准库
###SPL数据结构
SplDoublyLinkedList:双向链表
SplStack:堆
SplQueue:队列
SplFixedArray:定长php数组
###SPL迭代器
AppendIterator:按顺序访问几个不同的迭代器
$a = new ArrayIterator(array('a','b','c'));
$b = new ArrayIterator(array('e','d','f'));
$iterator = new AppendIterator;
$iterator->append($a);
$iterator->append($b);
//$iterator->current();
//$iterator->getArrayIterator();
//$iterator->getInnerIterator();
foreach ($iterator as $key => $value) {
echo $value."\n";
}
ArrayIterator:数组迭代器
$a = array(
'name' => 'daxia',
'age' => '10'
);
$a = new ArrayIterator($a);
$a->append(array(
'address' => '123',
));
CachingIterator:缓存迭代另一个迭代器
$iterator = new ArrayIterator(array(1,2,3));
$cache = new CachingIterator($iterator, CachingIterator::FULL_CACHE);
$cache->next();
var_dump($cache->getCache());
CallbackFilterIterator:同时执行过滤和回调操作
DirectoryIterator:目录文件迭代器
EmptyIterator:类占位符迭代器,不执行任何操作
FilesystemIterator:文件迭代器,继承DirectoryIterator
FilterIterator:过滤数据,必须实现accept()抽象方法
GlobIterator:带匹配模式的文件遍历器
InfiniteIterator:无限循环访问迭代器,当到达末尾时,自动重头遍历
IteratorIterator:通用类型迭代器,可以自定义迭代器
LimitIterator:限定迭代器,限定遍历的元素
MultipleIterator:依次遍历所有连接迭代的迭代器
NoRewindIterator:不能多次迭代,只能一次性
RecursiveArrayIterator:创建一个用于递归形式数组结构迭代器,类似多维数组
###常用的SPL函数
iterator_to_array() 将迭代器中的元素拷贝到数组
iterator_count() 统计迭代器的元素个数
spl_autoload() __autoload()函数
SPL类的更多相关文章
- PHP标准库 (SPL) 笔记
简介 SPL是Standard PHP Library(PHP标准库)的缩写. The Standard PHP Library (SPL) is a collection of interfaces ...
- php SPL学习
数据结构 SplDoublyLinkedList - 该SplDoublyLinkedList类提供了一个双向链表的主要功能 SplStack - 该SplStack类提供了一种使用双向链表实现栈的主 ...
- SPL学习 迭代器
主要学习内容: 慕课网的spl视频教程 阮一峰SPL学习笔记 http://www.ruanyifeng.com/blog/2008/07/php_spl_notes.html SPL类详解 http ...
- PHP类和函数注释大全
每次要用PHP的某个功能的时候,都要去查一下,于是决定将PHP所有类和函数都整理出来,加上注释 大致实现 将php.jar文件解压,取出目录stubs 将stubs中的所有php文件中的注释去掉,并做 ...
- 【SPL标准库专题(1)】 SPL简介
什么是SPL SPL是Standard PHP Library(PHP标准库)的缩写. 根据官方定义,它是"a collection of interfaces and classes th ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- PHP7函数大全(4553个函数)
转载来自: http://www.infocool.net/kb/PHP/201607/168683.html a 函数 说明 abs 绝对值 acos 反余弦 acosh 反双曲余弦 addcsla ...
- paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较
paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较 PHP5的新特性 2 · 对象的参照过渡是默认的(default) 3 · 引入访问属性的限制 3 · 引入访问方法的限 ...
- PHP框架Yii2.0安装(基础版、高级版)
最近农成也是切入了yiiframework 2.0,就是安装yii2.0就花费了不少的时间,为此做了很多的弯路,特此写一篇博文来给后面学习的同学少走一点的弯路.写的不好的地方欢迎各位学习的同学们能够指 ...
随机推荐
- Git 基础教程 之 --no-ff模式合并
① 创建并切换dev分支 ② 修改readme.txt,并add,commit ③ 切回master ④ 合并 git merge --no-ff -m “merge with no-ff”d ...
- 学习EXTJS6(7)基本功能-最常用的表单
开发过程中关于表单的处理无非: 1.表单和表单元素 2.实现表单验证 3.表单的提交和加载 -------------------------------------- 1.Ext.form.Basi ...
- HDU4569 Special equations
/* HDU4569 Special equations http://acm.hdu.edu.cn/showproblem.php?pid=4569 数论 题意:f(x)为一n次方程求是否存在x, ...
- CodeForces - 9B - Running Student
先上题目: B. Running Student time limit per test 1 second memory limit per test 64 megabytes And again ...
- 简述synchronized和java.util.concurrent.locks.Lock的异同
1.synchronized 用在方法和代码块的区别? a. 可以只对需要同步的使用 b.与wait(),notify()和notifyall()方法使用比较方便 2.wait() a.释放持有的对象 ...
- ios自己定义类(UIView)代码生成简单的UITableViewCell
因为一个项目中有大量的UITableViewCell须要书写,样式几乎相同都是 文字介绍:显示内容 这种. 自己又懒得写UITableViewCell类嫌不是必需:在方法tableView:cellF ...
- Codeforces 474 C. Captain Marmot
4*4*4*4暴力+点的旋转+推断正方型 C. Captain Marmot time limit per test 1 second memory limit per test 256 megaby ...
- 王立平--Http中Get() 与 Post()的差别?
Http协议是基于TCP协议的,而TCP协议是一种有连接.可靠的传输协议.假设丢失的话,会重传.所以这种话,就 不会有数据的丢失了. 而Http协议有三种方法.Get,Post,Head方法.可是用的 ...
- POJ 1166 The Clocks (暴搜)
发现对这样的模拟题根本没啥思路了,本来准备用bfs的.可是结果超时了,这是參考别的人代码写的: #include <stdio.h> #include <iostream> # ...
- hdu5355 Cake
Problem Description There are m soda and today is their birthday. The 1-st soda has prepared n cakes ...