public function create() { $expressionLanguage = new ExpressionLanguage(); $expressionLanguage->registerProvider(new StringProvider()); $expressionLanguage->registerProvider(new FilesystemProvider()); $expressionLanguage->register('get_config', function () { return ''; // Not supported }, function (array $arguments, $name, $default = null) { return $this->config->get($name, $default); }); $expressionLanguage->register('date', function () { return ''; // Not supported }, function (array $arguments, $format) { return date($format); }); return $expressionLanguage; }
protected function execute(InputInterface $input, OutputInterface $output) { $expressionLanguage = new ExpressionLanguage(); $expressionLanguage->registerProvider(new StringExpressionLanguageProvider()); var_dump($expressionLanguage->evaluate('1+2')); $compiled = $expressionLanguage->compile('"TEST"~" "~"aaa"'); var_dump($compiled); $testClass = new TestClass(); $testClass->aa = 123; var_dump($expressionLanguage->evaluate('test.aa~" "~test.hi()', ['test' => $testClass])); $language = new ExpressionLanguage(null, [new StringExpressionLanguageProvider()]); var_dump($language->evaluate('lowercase("AAA")')); eval('var_dump(' . $language->compile('lowercase("AAA")') . ');'); $expr = new Expression('(1+2)*test.aa'); $parsedExpression = $language->parse($expr, ['test']); var_dump($parsedExpression); var_dump($language->evaluate($parsedExpression, ['test' => $testClass])); $serializedExpression = new SerializedParsedExpression('(1+2)*test.aa', serialize($parsedExpression->getNodes())); var_dump($language->evaluate($serializedExpression, ['test' => $testClass])); }