1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Symfony\Component\HttpFoundation;
13:
14: use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
15:
16: 17: 18: 19: 20:
21: class ExpressionRequestMatcher extends RequestMatcher
22: {
23: private $language;
24: private $expression;
25:
26: public function setExpression(ExpressionLanguage $language, $expression)
27: {
28: $this->language = $language;
29: $this->expression = $expression;
30: }
31:
32: public function matches(Request $request)
33: {
34: if (!$this->language) {
35: throw new \LogicException('Unable to match the request as the expression language is not available.');
36: }
37:
38: return $this->language->evaluate($this->expression, array(
39: 'request' => $request,
40: 'method' => $request->getMethod(),
41: 'path' => rawurldecode($request->getPathInfo()),
42: 'host' => $request->getHost(),
43: 'ip' => $request->getClientIp(),
44: 'attributes' => $request->attributes->all(),
45: )) && parent::matches($request);
46: }
47: }
48: