/** * {@inheritdoc} */ public function __invoke(FilterTransformer $transformer, Expression $expression, $element, Configuration $config) { $reducer = function ($curry, $expression) use($transformer, $element, $config) { return call_user_func($this->callback, $curry, $transformer->resolve($expression, $element, $config)); }; return array_reduce($expression->getArgs(), $reducer, $this->initial); }
public function testUnsupportedExpressionException() { $this->expectException(\InvalidArgumentException::class); $filter = $this->transformer->transform($this->createMock(Expression::class), $this->config); $filter([]); }
/** * {@inheritdoc} */ public function __invoke(FilterTransformer $transformer, Expression $expression, $element, Configuration $config) { $left = $transformer->resolve($expression->getArg(0), $element, $config); $right = $transformer->resolve($expression->getArg(1), $element, $config); return call_user_func($this->callback, $left, $right); }
/** * {@inheritdoc} */ public function __invoke(FilterTransformer $transformer, Expression $expression, $element, Configuration $config) { return array_map(function ($expression) use($element, $transformer, $config) { return $transformer->resolve($expression, $element, $config); }, $expression->getArgs()); }