🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 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对象 ~~~