ProfiPHPProfiPHP
Категория: Прочие функции PHP

Функция Eval

Функция Eval исполняет код PHP, содержащейся в строке.
mixed eval( string $code )
Функция Eval исполняет строку, переданную в параметре Code, как код PHP.

В параметре Сode указывается исполняемая строка кода PHP.

Исполняемый код должен быть без обрамления открывающимся и закрывающимся тегами PHP (<?php и ?>). Но возможно переключаться между режимами PHP и HTML в середине кода обычным образом, например:
eval( 'echo "Код PHP!"; ?>Код HTML<?php echo "Код PHP!";' );
Операторы обязательно должны быть разделены точкой с запятой (;). Например:
eval( 'echo "Привет!"' );
В результате работы примера будет выведена ошибка:
Parse error: syntax error, unexpected end of file, expecting ',' or ';' in C:\script.php(5) : eval()'d code on line 1
Если указать в конце точку с запятой (;), ошибки не будет.
eval( 'echo "Привет!";' );
Если указать в коде ключевое слово Return, тогда происходит немедленное прекращение исполнение кода в строке. Ключевое слово Return не выполняет прекращения выполнения, если указана в коде функции, например:
eval( '
function example( $variable ) {
return $variable;
}
echo example( "PHP" );
echo "Good";' );
Результат выполнения: PHPGood.

Пример с использованием Return:
eval( '
function example( $variable ) {
return $variable;
}
echo example( "PHP" );
return;
echo "Good";' );
В данном случае, результат будет только слово PHP.

Поскольку исполняемый код из строки выполняется в области видимости кода, вызвавшего функцию Eval, любые переменные, определенные или измененные кодом, будут доступны после его выполнения в теле программы.

Функция Eval возвращает NULL пока не будет вызвано ключевое слово Return или конец строки. С PHP 7, если в исполняемом коде присутствует ошибка - вызывается исключение ParseError, до PHP 7, в этом случае возвращается FALSE и продолжается нормальное выполнение последующего кода.

Как и с любой другой функцией, осуществляющей вывод непосредственно в браузер, вы можете использовать функции контроля вывода, чтобы перехватывать выводимые этой функцией данные и сохранять их.
Будьте крайне внимательны, использую Eval, поскольку она позволяет исполнить произвольный код, в том числе и нежелательный. Обратите особое внимание на исключения обработки таким образом данных, вводимых пользователем, без специальной обработки и валидации.

Пример использования функции Eval:
$digit = '1';
$str = 'Digit = $digit ';
echo $str;
eval( "\$str = \"$str\";");
echo $str;
Результат выполнения:
Digit = $digit Digit = 1

Добавить комментарий

Имя:
Текст комментария: