·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