| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | <?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Component\HttpFoundation;use Symfony\Component\ExpressionLanguage\ExpressionLanguage;/** * ExpressionRequestMatcher uses an expression to match a Request. * * @author Fabien Potencier <fabien@symfony.com> */class ExpressionRequestMatcher extends RequestMatcher{    private $language;    private $expression;    public function setExpression(ExpressionLanguage $language, $expression)    {        $this->language = $language;        $this->expression = $expression;    }    public function matches(Request $request)    {        if (!$this->language) {            throw new \LogicException('Unable to match the request as the expression language is not available.');        }        return $this->language->evaluate($this->expression, [            'request' => $request,            'method' => $request->getMethod(),            'path' => rawurldecode($request->getPathInfo()),            'host' => $request->getHost(),            'ip' => $request->getClientIp(),            'attributes' => $request->attributes->all(),        ]) && parent::matches($request);    }}
 |