# Traversable(遍歷)接口
## 簡介
檢測一個類是否可以使用[foreach](https://www.php.net/manual/zh/control-structures.foreach.php)進行遍歷的接口。
無法被單獨實現的基本抽象接口。相反它必須由**IteratorAggregate**或**Iterator**接口實現。
> **注意**:
>
> 實現此接口的內建類可以使用[foreach](https://www.php.net/manual/zh/control-structures.foreach.php)進行遍歷而無需實現**IteratorAggregate**或**Iterator**接口。
> **注意**:
>
> 這是一個無法在 PHP 腳本中實現的內部引擎接口。**IteratorAggregate**或**Iterator**接口可以用來代替它。
## 接口摘要
class**Traversable**{
}
這個接口沒有任何方法,它的作用僅僅是作為所有可遍歷類的基本接口。
### 判斷是否可以使用foreach遍歷
~~~
/**
* @param int $vsh
* @return iterator iterator作為返回值
*
*/
function gen(int $vsh):iterator {
for ($vsh;$vsh<10;$vsh++) {
yield $vsh;
}
}
$a=gen(2);
if ($a instanceof Traversable){
foreach ($a as $value){
echo $value."<br>";
}
}
~~~
- 空白目錄
- iterable接口
- 接口Traversable繼承Iterator接口
- 類 RarArchive 繼承Traversable接口
- 類SimpleXMLElement繼承Traversable接口
- 類SimpleXMLIterator 繼承SimpleXMLElement類
- 類IntlRuleBasedBreakIterator實現Traversable接口
- 類IntlCodePointBreakIterator實現Traversable接口
- 類DocResult 實現BaseResult和Traversable
- 類Result 實現\BaseResult和Traversable
- 類RowResult實現\BaseResult 和Traversable
- 類SqlStatementResult 實現BaseResult 和Traversable
- 接口IteratorAggregate 繼承Traversable
- 類DOMNodeList 實現IteratorAggregate, Countable
- 類DOMNamedNodeMap 實現IteratorAggregate, Countable