Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在没有eval()的情况下存储逻辑数据?_Php_Mysql_Laravel_Eval - Fatal编程技术网

Php 如何在没有eval()的情况下存储逻辑数据?

Php 如何在没有eval()的情况下存储逻辑数据?,php,mysql,laravel,eval,Php,Mysql,Laravel,Eval,我正在开发一个应用程序,允许管理员为他们的商店设置条件,以提供特殊服务。例如: if (($cartTotal > 200) && (has_item_in_cart($item))) { // free shipping, % discount, etc } 他们将有一个GUI来设置条件,我想知道如何存储信息。到目前为止,我提出的唯一解决方案是生成if语句并将其作为文本存储在数据库中,然后使用eval()对其进行评估。不过,在公开的应用程序中使用eval(),我还是非常

我正在开发一个应用程序,允许管理员为他们的商店设置条件,以提供特殊服务。例如:

if (($cartTotal > 200) && (has_item_in_cart($item))) { // free shipping, % discount, etc }
他们将有一个GUI来设置条件,我想知道如何存储信息。到目前为止,我提出的唯一解决方案是生成
if
语句并将其作为文本存储在数据库中,然后使用
eval()
对其进行评估。不过,在公开的应用程序中使用
eval()
,我还是非常犹豫。还有其他选择吗


如果有可用的软件包,它将使用Laravel。

您可以使用类似Symfony的表达式语言:


至少比eval安全多了!:)

您需要创建自己的解析器,永远不要使用eval
eval()
仅在计算未知方或不合格方提供的字符串时才是危险的。您需要具体化要计算的表达式方案。如果它真的只是简单的ANDIN/ORing和一些预定义的函数调用,那么一个简单的树并在其上循环就可以了另外,当传入代码由管理员定义时,
eval
非常适合。建议noobs避免
eval
。任何更精通的人都会意识到,这是将脚本与编译语言分开的一个特性。因为模因而排除它是不聪明的。(顺便说一句,
eval
include
都是一样的。)eval仍然有很大的缺点,即使您可以保证表达式的值,尤其是如果计算的代码中有错误,我将试一试!)