private function addParameterMapping(ExpressionCompiler $compiler)
 {
     $name = $compiler->nextName();
     $indexName = $compiler->nextName();
     $paramName = $compiler->nextName();
     $compiler->setAttribute('parameter_mapping_name', $name)->writeln("\${$name} = array();")->write("foreach (")->compileInternal(new VariableExpression('object'))->writeln("->reflection->getParameters() as \${$indexName} => \${$paramName}) {")->indent()->writeln("\${$name}[\${$paramName}->name] = \${$indexName};")->outdent()->writeln("}\n");
 }
 public function testComplexExpression()
 {
     $expression = 'requests[0].attributes.get(name, "default")';
     $evaluator = eval($this->compiler->compileExpression(new Expression($expression)));
     $context = array('requests' => array(new Request()), 'name' => 'Adrien');
     $expected = array('Adrien', 'default');
     $this->assertEquals($expected, $evaluator($context));
 }
 public function compile(ExpressionCompiler $compiler, ExpressionInterface $expr)
 {
     if ('permitAll' === $expr->name) {
         $compiler->write('true');
         return;
     }
     if ('denyAll' === $expr->name) {
         $compiler->write('false');
         return;
     }
     if ($expr->allowNull) {
         $compiler->write("(isset(\$context['{$expr->name}']) ? ");
     }
     $compiler->write("\$context['{$expr->name}']");
     if ($expr->allowNull) {
         $compiler->write(" : null)");
     }
 }
 public function compile(ExpressionCompiler $compiler, ExpressionInterface $expr)
 {
     $compiler->write('!(')->compileInternal($expr->expr)->write(')');
 }
 public function compile(ExpressionCompiler $compiler, ExpressionInterface $expr)
 {
     $compiler->write("(")->compileInternal($expr->left)->write(") " . $this->getOperator() . " (")->compileInternal($expr->right)->write(")");
 }
 protected function setUp()
 {
     $this->compiler = new ExpressionCompiler();
     $this->compiler->addTypeCompiler(new ParameterExpressionCompiler());
 }