eval
- это конструкция, которую можно использовать для проверки синтаксических ошибок.
Допустим, у вас есть два сценария PHP:
script1.php
<?php
// This is a valid syntax
$a = 1;
script2.php
<?php
// This is an invalid syntax
$a = abcdef
Вы можете проверить наличие синтаксических ошибок, используя eval
:
$code1 = 'return true; ?>'.file_get_contents('script1.php');
$code2 = 'return true; ?>'.file_get_contents('script2.php');
echo eval($code1) ? 'script1 has valid syntax' : 'script1 has syntax errors';
echo eval($code2) ? 'script2 has valid syntax' : 'script2 has syntax errors';
В отличие от php_check_syntax (который все равно считается устаревшим и удаляется), код не будет выполняться.
РЕДАКТИРОВАТЬ:
Другой (предпочтительный) вариант - php -l
.Вы можете использовать приведенное выше решение, если у вас нет доступа к командам выполнения system () или оболочки.
Этот метод может внедрять классы / функции в ваш код.Обязательно используйте preg_replace
вызов или namespace
перед тем, как сделать это, чтобы предотвратить их выполнение при последующих вызовах.
Что касается темы OP: Когда (если когда-либо) значение evalНЕ ЗЛО? eval
просто не зло.Программисты злые за использование eval
без причины.eval
может сократить ваш код (математическое выражение выражения, на пример).