Я создаю класс PHP с функцией члена парламента, не занимающего официального поста, которая возвращает строковое значение, такое как:
'true && true || false'
к общедоступной функции членства. (Эта строка является результатом некоторого соответствия regex и поисков свойства.), Что я хотел бы сделать, имеют PHP, анализируют возвращенную логику и имеют вышеупомянутый возврат государственной функции, является ли булевым результатом проанализированной логики TRUE или FALSE.
Я попробовал оценку (), но я не получаю вывода вообще. Я пытался преобразовать тип булевых возвратов..., но нет никакого способа преобразовать тип операторов... hehe Какие-либо идеи? (Сообщите мне, нужно ли Вам больше информации.)
eval ()
отлично подойдет для этого, но помните, что вы должны сказать ему, чтобы он что-то возвратил.
$string = "true && true || false";
$result = eval("return (".$string.");"); // $result will be true
Также убедитесь, что вы дезинфицируете любые вводимые пользователем данные, если помещаете их непосредственно в eval ()
.
Давайте предположим, что eval() является нормальным/хорошим решением в вашем случае.
class Foo {
private function trustworthy() {
return 'true && true || false';
}
public function bar() {
return eval('return '.$this->trustworthy().';');
}
}
$foo = new Foo;
$r = $foo->bar();
var_dump($r);
prints bool(true)