РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1046 of 1361 menu

Метод lint класса ExpressionLanguage

Метод lint класса ExpressionLanguage выполняет синтаксическую проверку выражения языка выражений Symfony. Он не вычисляет выражение, а лишь анализирует его на наличие ошибок. Первым параметром передаётся строка с выражением, вторым - массив имён переменных, которые будут доступны в выражении. Метод возвращает null, если выражение корректно, или объект SyntaxError с описанием ошибки.

Синтаксис

$expressionLanguage->lint(string $expression, array $names = [])

Пример

Давайте проверим корректное выражение:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentExpressionLanguageExpressionLanguage; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(): Response { $expressionLanguage = new ExpressionLanguage(); $res = $expressionLanguage->lint('1 + 2'); var_dump($res); return new Response('ok'); } } ?>

Результат выполнения кода:

NULL

Пример

Давайте проверим выражение с синтаксической ошибкой:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentExpressionLanguageExpressionLanguage; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(): Response { $expressionLanguage = new ExpressionLanguage(); $res = $expressionLanguage->lint('1 +'); var_dump($res); return new Response('ok'); } } ?>

Результат выполнения кода:

object(SymfonyComponentExpressionLanguageSyntaxError)#1 (3) { ["message":protected]=> string(35) "Unexpected end of expression around position 3" ["cursor":protected]=> int(3) ["expression":protected]=> string(3) "1 +" }

Пример

Давайте проверим выражение с переменной, передав её имя вторым параметром:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentExpressionLanguageExpressionLanguage; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(): Response { $expressionLanguage = new ExpressionLanguage(); $res = $expressionLanguage->lint('user == "abcde"', ['user']); var_dump($res); return new Response('ok'); } } ?>

Результат выполнения кода:

NULL

Смотрите также

  • класс ExpressionLanguage,
    который представляет язык выражений Symfony
  • метод evaluate,
    который вычисляет выражение
  • метод compile,
    который компилирует выражение в PHP-код
  • метод register,
    который регистрирует новую функцию в языке выражений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить