将php代码规则存储在数据库中

时间:2015-02-22 09:05:34

标签: php mysql eval

目前我正在设计带有送货商的网站的数据库和架构。

有些供应商有静电交货价格,没有问题,但有些供应商有动态计算价格。例如:

if ({{item_type}} == 1)
   $price = {{default_price}} - {{default_price}} * 0.5;
else
   $price = {{default_price}};
// {{...}} values are in sql tables

提供商的数量很大,应该很容易添加,所以我不能在php中对每个规则进行硬编码。

我的想法是将商店这样的规则存储为字符串sql列和工作流应该如下:

select_rule -> parse_{{}}_values -> preg_replace_{{}}_values ->
               eval(selected&parsed_rule) -> use_$price_variable

但我并不完全相信这是最好和最有效的解决方案,或者它会起作用。你觉得怎么样?

有更合适的解决方案吗?也许某人已经有过这样的挑战,并找到了一条出路。

1 个答案:

答案 0 :(得分:2)

虽然技术上可行,但执行直接存储在数据库中的代码会带来安全风险。添加字段以满足价格变化的方式(provider_markup,provider_discount,provider_shipping等)并构建代码以利用这些字段更有意义。