В настоящее время занимаюсь проектированием БД и архитектуры сайта с провайдерами доставки.
У некоторых провайдеров статическая цена доставки, проблем нет, но у некоторых динамически рассчитывается цена. Например:
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 и т. Д.) И создать свой код для их использования.
Других решений пока нет …