Совершенствуем альтернативу eval в php

Суббота, Апрель 10, 2010 12:15
Seodaiter > Программирование > Совершенствуем альтернативу eval в php

Недавно в посте Альтернатива eval() в php я рассказывал, как можно не используя саму функцию eval() выполнить код содержащийся в переменной. Напомню, что функция eval() обычно не используется в стандартном программировании, ее обычно юзают, когда в закрытом интерфейсе, это например php нужно выполнить код содержащийся в переменной. Если вы имели дело с ассемблером, то там чтобы выполнить код из переменной нужно всего лишь передать управление на нее, а в конце самого кода передать управление тому участку кода, от куда ее собственно и вызывали. Вот такие преимущества дает ассемблер программисту, в отличие от языков высокого уровна, типа C++, в котором нужно подумать уже как выполнить код.

Что-то я сильно отвлекся. Значит я усовершенствую функцию alt_eval() описаную в посте Альтернатива eval() в php. Самое главное, что нужно, это уберечь функцию от ошибок. Для примера, программист забыл заключить код в теги php, ну значит мы ему поможем.

< ?php
function alt_eval($code, $bool){
$hdl = fopen(‘qswdefrgthyjuk.php’, ‘w’);//Открываем файл

if($bool==1){
$code = ‘<?php’.$code.’?>’;
}

fwrite($hdl, $code);//Записываем в него код
fclose($hdl);//Закрываем
include(‘qswdefrgthyjuk.php’);//Вставляем на выполнение
}
?>

Ну и наверное нужно удалить файл, который нам был нужен.

< ?php
function alt_eval($code, $bool){
$hdl = fopen(‘qswdefrgthyjuk.php’, ‘w’);//Открываем файл

if($bool==1){
$code = ‘<?php’.$code.’?>’;
}

fwrite($hdl, $code);//Записываем в него код
fclose($hdl);//Закрываем
include(‘qswdefrgthyjuk.php’);//Вставляем на выполнение

unlink(‘qswdefrgthyjuk.php’);
}
?>

Вот и усе, теперь функция более надежная.

Оставить комментарий или два