public function combine($op, $map1/**, $transf2,... */)
    {
        $transformations = func_get_args();
        array_shift($transformations);

        return function(Expression $expr, $compiler) use ($op, $transformations)
        {
            $tree = new SpanExpression(strtoupper($op));

            foreach ($transformations as $transformation) {
                $tree->addExpression($transformation($expr, $compiler));
            }

            return $tree;
        };
    }
public function combine($op, $map1/**, $transf2,... */)
    {
        $transformations = func_get_args();
        array_shift($transformations);

        return function(Expression $expr, $compiler) use ($op, $transformations)
        {
            $tree = new SpanExpression(strtoupper($op));

            foreach ($transformations as $transformation) {
                $tree->addExpression($transformation($expr, $compiler));
            }

            return $tree;
        };
    }
public function combine ( $ op , $ map1 /**, $transf2,... */ ) { $ transformations = func_get_args ( ) ; array_shift ( $ transformations ) ; return function ( Expression $ expr , $ compiler ) use ( $ op , $ transformations ) { $ tree = new SpanExpression ( strtoupper ( $ op ) ) ; foreach ( $ transformations as $ transformation ) { $ tree -> addExpression ( $ transformation ( $ expr , $ compiler ) ) ; } return $ tree ; } ; }
Combine many maps to a single tree one

@param string $op        A boolean operator
@param callable $map1, ...
@return callable
Combine many maps to a single tree one