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

Store php code rules in database

目前我正在与交付提供商一起设计网站的数据库和架构。

有些供应商是静态运费,没有问题,但有些是动态计算价格。例如:

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

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

有没有更合适的方案?也许有人已经遇到过这样的挑战并找到了很好的出路。

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