/** * @return array */ protected function forAllTest() { $projector = Projectors::select(Selectors::key('foo'))->select(Selectors::key('list')->count())->as('count')->join(Projectors::forAll(Selectors::key('list'), Projectors::select(Selectors::callback(function ($value) { return $value['bar'] * 3; }))->as('bar'))); return array($projector, array('foo' => 1, 'list' => array(array('bar' => 1), array('bar' => 2), array('bar' => 3))), new \ArrayIterator(array(DefaultProjectionBuilder::fromObject((object) array('foo' => 1, 'count' => 3, 'bar' => 3)), DefaultProjectionBuilder::fromObject((object) array('foo' => 1, 'count' => 3, 'bar' => 6)), DefaultProjectionBuilder::fromObject((object) array('foo' => 1, 'count' => 3, 'bar' => 9))))); }
/** * @return string[][] */ protected function staticCallDataProvider() { return array(array(Selectors::key('foo'), Key::class), array(Selectors::property('foo'), Property::class), array(Selectors::method('foo'), Method::class), array(Selectors::callback(function () { }), Callback::class), array(Selectors::count(), Count::class), array(Selectors::value('foo'), Value::class), array(Selectors::composite(Selectors::value(array()), Selectors::count()), Composite::class)); }
/** * @param callable $callback * * @return \Cubiche\Core\Predicate\SelectorPredicate */ public function callback(callable $callback) { return $this->select(Selectors::callback($callback)->selector()); }