# 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