1<?php 2 3declare(strict_types=1); 4 5namespace JMS\Serializer\Metadata\Driver; 6 7use JMS\Serializer\Exception\InvalidMetadataException; 8use JMS\Serializer\Expression\CompilableExpressionEvaluatorInterface; 9use JMS\Serializer\Expression\Expression; 10 11trait ExpressionMetadataTrait 12{ 13 /** 14 * @var CompilableExpressionEvaluatorInterface 15 */ 16 private $expressionEvaluator; 17 18 /** 19 * @return Expression|string 20 * 21 * @throws InvalidMetadataException 22 */ 23 private function parseExpression(string $expression, array $names = []) 24 { 25 if (null === $this->expressionEvaluator) { 26 return $expression; 27 } 28 29 try { 30 return $this->expressionEvaluator->parse($expression, array_merge(['context', 'property_metadata', 'object'], $names)); 31 } catch (\LogicException $e) { 32 throw new InvalidMetadataException(sprintf('Can not parse the expression "%s"', $expression), 0, $e); 33 } 34 } 35} 36