## Traversable 可遍歷對象
在進行集成查詢之前,首先需要有數據源。
ITraversable是所有查詢對象的基本接口,Traversable類是PINQ提供的ITraversable接口實現。
我們來創建一個最簡單的數據源:
~~~
$strArr=['foo', 'bar', 'baz', 'tear', 'cow', 'tripod', 'whisky', 'sand', 'which'];
//創建一個可遍歷對象
$strTravers=new Traversable($strArr);
~~~
這個對象的結構如下:
~~~
Traversable {#10 ▼
#scheme: GeneratorScheme {#13} //對象的迭代規則,不傳入使用默認的迭代規則。
#source: null //可遍歷的數據源,可以傳入Traversable對象,默認值為null。
#elements: ArrayIterator {#14 ▼ //迭代器元素,這個是我們最需要關心的。
#array: array:9 [▼
0 => "foo"
1 => "bar"
2 => "baz"
3 => "tear"
4 => "cow"
5 => "tripod"
6 => "whisky"
7 => "sand"
8 => "which"
]
}
}
~~~
使用靜態方法from也可以達到相同效果:
~~~
$strTravers=Traversable::from($strArr);
~~~
該類中還提供了一個靜態方法factory,返回一個使用相同迭代規則的Traversable的構造函數閉包:
~~~
$traversFactory=Traversable::factory();
$res=$traversFactory($strArr); //調用閉包,得到和上面一樣的Traversable對象
~~~