private function shouldSkip($object, Exclusion $exclusion = null, SerializationContext $context) { if (null !== $exclusion && null !== $exclusion->getExcludeIf() && $this->expressionEvaluator->evaluate($exclusion->getExcludeIf(), $object)) { return true; } if (!$context->getExclusionStrategy()) { return false; } $propertyMetadata = new RelationPropertyMetadata($exclusion); return $context->getExclusionStrategy()->shouldSkipProperty($propertyMetadata, $context); }
/** * @param object $object * @param SerializationContext $context * @return Embed[] */ public function create($object, SerializationContext $context) { $embeds = array(); foreach ($this->relationsRepository->getRelations($object) as $relation) { if ($this->exclusionManager->shouldSkipEmbed($object, $relation, $context)) { continue; } $rel = $this->expressionEvaluator->evaluate($relation->getName(), $object); $data = $this->expressionEvaluator->evaluate($relation->getEmbed()->getContent(), $object); $xmlElementName = $this->expressionEvaluator->evaluate($relation->getEmbed()->getXmlElementName(), $object); $embeds[] = new Embed($rel, $data, $xmlElementName); } return $embeds; }
public function evaluate($expression, $data) { if (!empty($this->functionsIds)) { $this->registerFunctions(); } return parent::evaluate($expression, $data); }
public function testEvaluate() { $object = new \StdClass(); $linkHelperMock = $this->mockHelper('/foo', $object, 'self', false); $expressionEvaluator = new ExpressionEvaluator(new ExpressionLanguage()); $expressionEvaluator->registerFunction(new LinkExpressionFunction($linkHelperMock)); $this->assertEquals('/foo', $expressionEvaluator->evaluate('expr(link(object, "self", false))', $object)); }
/** * @param object $object * @param Relation $relation * * @return Link */ public function createLink($object, Relation $relation) { $rel = $this->expressionEvaluator->evaluate($relation->getName(), $object); $href = $relation->getHref(); if ($href instanceof Route) { if (!$this->urlGeneratorRegistry->hasGenerators()) { throw new \RuntimeException('You cannot use a route without an url generator.'); } $name = $this->expressionEvaluator->evaluate($href->getName(), $object); $parameters = is_array($href->getParameters()) ? $this->expressionEvaluator->evaluateArray($href->getParameters(), $object) : $this->expressionEvaluator->evaluate($href->getParameters(), $object); if (!is_array($parameters)) { throw new \RuntimeException(sprintf('The route parameters should be an array, %s given. Maybe you forgot to wrap the expression in expr(...).', gettype($parameters))); } $href = $this->urlGeneratorRegistry->get($href->getGenerator())->generate($name, $parameters, $href->isAbsolute()); } else { $href = $this->expressionEvaluator->evaluate($href, $object); } $attributes = $this->expressionEvaluator->evaluateArray($relation->getAttributes(), $object); return new Link($rel, $href, $attributes); }
public function testRegisterFunction() { $expressionEvaluator = new ExpressionEvaluator(new ExpressionLanguage()); $expressionEvaluator->registerFunction(new HelloExpressionFunction()); $this->string($expressionEvaluator->evaluate('expr(hello("toto"))', null))->isEqualTo('Hello, toto!'); }
/** * @dataProvider getTestEvaluateNonStringData */ public function testEvaluateNonString($value) { $expressionEvaluator = new ExpressionEvaluator(new ExpressionLanguage()); $this->variable($expressionEvaluator->evaluate($value, array()))->isIdenticalTo($value); }
/** * @dataProvider getTestEvaluateNonStringData */ public function testEvaluateNonString($value) { $expressionEvaluator = new ExpressionEvaluator(new ExpressionLanguage()); $this->assertSame($value, $expressionEvaluator->evaluate($value, array())); }
public function evaluate($expression, $data) { $this->registerFunctions(); return parent::evaluate($expression, $data); }