Метод 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,
который регистрирует новую функцию в языке выражений