## 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对象
~~~