·SPL的基础接口里面定义了最常用的接口
-Countable
·继承了该接口的类可以直接调用count()得到元素个数
-OuterIterator
·如果想对迭代器进行一定的处理之后再返回,可以用这个接口
-RecursiveIterator
·可以对多层结构的迭代器进行迭代,比如遍历一棵树
-SeekableIterator
·可以通过seek方法定位到集合里面的某个特定元素
1.Countable
·在代码里面精彩可以直接用count($obj)方法获得对象里面的元素的个数
count(array('name'=>'Peter','id'=>'5'));
实例:
<?php
$array = array(
array('name'=>'Jonathan','id'=>'5'),
array('name'=>'Jona','id'=>'2'),
array('name'=>'than','id'=>'3')
);
echo count($array)."<br>";
echo count($array[1])."<br>";
?>
<!-- 调用接口进行实现数量 -->
<?php
class CountMe implements Countable{
protected $_myCount=3;
// 一定要是count()方法
public function count(){
return $this->_myCount;
}
}
$obj = new CountMe();
echo count($obj);
?>
2.OuterIterator
-如果想对迭代器进行一定的处理之后再返回,可以用这个接口
-IteratorIterator类是OuterIterator的实现,扩展的时候可以直接继承IteratorIterator
实例:
<?php
date_default_timezone_set('prc');
$array = ['Value1','Value2','Value3','Value4'];
$outerObj =new OuterImpl(new ArrayIterator($array));
foreach ($outerObj as $key => $value) {
echo '++'.$key." - ".$value."<br>";
}
class OuterImpl extends IteratorIterator{
// 对值进行处理
public function current(){
return parent::current()."_tail";
}
// 对键进行处理
public function key(){
return "Pre_".parent::key();
}
}
?>
3.RecursiveIterator
-可以对多层结构的迭代器进行迭代,比如遍历一棵树
-所有具有层次结构特点的数据都可以用这个接口遍历
·如:文件夹
-关键方法
·hasChildren方法用于判断当前节点是否存在子节点
·getChildren方法用于得到当前节点子节点的迭代器
·SPL中实现该接口的类
-RecursiveArrayIterator,RecursiveCachingIterator等以Recursive开头的类都能够进行多层次结构化的遍历
4.SeekableIterator
-可以通过seek方法定位到集合里面的某个特定元素
-seek方法的参数是元素的位置,从0开始计算
·SPL中实现该类接口的方法
-ArrayIterator、DirectoryIterator、FilesystemIterator、
GlobIterator、RecursiveArrayIterator、RecursiveDirectoryIterator
-Countable
·继承了该接口的类可以直接调用count()得到元素个数
-OuterIterator
·如果想对迭代器进行一定的处理之后再返回,可以用这个接口
-RecursiveIterator
·可以对多层结构的迭代器进行迭代,比如遍历一棵树
-SeekableIterator
·可以通过seek方法定位到集合里面的某个特定元素
1.Countable
·在代码里面精彩可以直接用count($obj)方法获得对象里面的元素的个数
count(array('name'=>'Peter','id'=>'5'));
实例:
<?php
$array = array(
array('name'=>'Jonathan','id'=>'5'),
array('name'=>'Jona','id'=>'2'),
array('name'=>'than','id'=>'3')
);
echo count($array)."<br>";
echo count($array[1])."<br>";
?>
<!-- 调用接口进行实现数量 -->
<?php
class CountMe implements Countable{
protected $_myCount=3;
// 一定要是count()方法
public function count(){
return $this->_myCount;
}
}
$obj = new CountMe();
echo count($obj);
?>
2.OuterIterator
-如果想对迭代器进行一定的处理之后再返回,可以用这个接口
-IteratorIterator类是OuterIterator的实现,扩展的时候可以直接继承IteratorIterator
实例:
<?php
date_default_timezone_set('prc');
$array = ['Value1','Value2','Value3','Value4'];
$outerObj =new OuterImpl(new ArrayIterator($array));
foreach ($outerObj as $key => $value) {
echo '++'.$key." - ".$value."<br>";
}
class OuterImpl extends IteratorIterator{
// 对值进行处理
public function current(){
return parent::current()."_tail";
}
// 对键进行处理
public function key(){
return "Pre_".parent::key();
}
}
?>
3.RecursiveIterator
-可以对多层结构的迭代器进行迭代,比如遍历一棵树
-所有具有层次结构特点的数据都可以用这个接口遍历
·如:文件夹
-关键方法
·hasChildren方法用于判断当前节点是否存在子节点
·getChildren方法用于得到当前节点子节点的迭代器
·SPL中实现该接口的类
-RecursiveArrayIterator,RecursiveCachingIterator等以Recursive开头的类都能够进行多层次结构化的遍历
4.SeekableIterator
-可以通过seek方法定位到集合里面的某个特定元素
-seek方法的参数是元素的位置,从0开始计算
·SPL中实现该类接口的方法
-ArrayIterator、DirectoryIterator、FilesystemIterator、
GlobIterator、RecursiveArrayIterator、RecursiveDirectoryIterator