コード例 #1
0
 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]));
 }