Giter VIP home page Giter VIP logo

Comments (1)

jonathaningram avatar jonathaningram commented on June 2, 2024

More information:

In JMS\SecurityExtraBundle\Security\Authorization\Expression\ExpressionCompiler, we have:

<?php

public function compilePreconditions(ExpressionInterface $expr)
    {
        if ($typeCompiler = $this->findTypeCompiler(get_class($expr))) {
            $typeCompiler->compilePreconditions($this, $expr);

            return $this;
        }

        if ($expr instanceof FunctionExpression) {
            $this->getFunctionCompiler($expr->name)->compilePreconditions($this, $expr);

            foreach ($expr->args as $arg) {
                $this->compilePreconditions($arg);
            }

            return $this;
        }

        if ($expr instanceof VariableExpression) {
            $this->getVariableCompiler($expr->name)->compilePreconditions($this, $expr);

            return $this;
        }

        return $this;
    }

The $expr argument looks like this:

JMS\SecurityExtraBundle\Security\Authorization\Expression\Ast\MethodCallExpression object {
  CLASSNAME => (string) JMS\SecurityExtraBundle\Security\Authorization\Expression\Ast\MethodCallExpression
  object => JMS\SecurityExtraBundle\Security\Authorization\Expression\Ast\ParameterExpression object {
    CLASSNAME => (string) JMS\SecurityExtraBundle\Security\Authorization\Expression\Ast\ParameterExpression
    name => (string) project
  }
  method => (string) getCompany
  args => array(0)
}

and so the preconditions for this are not compiled because that type does not match any in the method.

Thus, once we get to JMS\SecurityExtraBundle\Security\Authorization\Expression\Compiler\ParameterExpressionCompiler:

<?php

public function compile(ExpressionCompiler $compiler, ExpressionInterface $parameter)
    {
        $compiler
            ->compileInternal(new VariableExpression('object'))
            ->write("->arguments[");
        $compiler
            ->write("\${$compiler->attributes['parameter_mapping_name']}")
            ->write("['{$parameter->name}']]")
        ;
    }

$compiler->attributes['parameter_mapping_name'] is empty.

from jmssecurityextrabundle.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.