php做商品促销模块,促销模块 | Laravel China 社区

本文探讨了电商促销模块的设计,分为规则(Rule)和行为(Action)两个部分。规则定义了促销活动的条件,如买A赠B,而行为则是满足条件后的执行操作。在某些情况下,如满减或打折活动,规则和行为可以不分离。通过示例代码展示了如何使用PHP实现一个可扩展的促销管理框架,包括规则和行为的分离与组合。
摘要由CSDN通过智能技术生成

电商的促销模块,抽象出来。有两个,规则和行为。

比如,后台发布一个促销活动,满足一定的条件,执行相对应的行为。

比如,买A赠B

1规则

买A

if(买A==true){

}

2 行为

赠B

if(买A==true){

execute('赠B')

}

促销活动Promote 有一个Rule,满足了Rule后,去执行相应的行为Action。

有一些促销活动没必要拆分Rule和Action,比如满100减30或者打8折活动,因为是作用于整单的没有其它条件。对于购A赠B来说,是满足某一特殊条件,条件和行为是必须分离的。

因此对于Rule来说自己本身可有Action

3 Rule和Action什么时候分离

有一般条件的 Rule和 Action 不分离

有特殊条件的 Rule和 Action 分离

写了一个包

Installing

$ composer require jc91715/promote -vvv

Usage

require_once('./vendor/autoload.php');

use Jc91715\Promote\PromoteManage;

use Jc91715\Promote\Promote\AbstractPromote;

use Jc91715\Promote\Rule\abstractRule;

use Jc91715\Promote\Action\ActionInterface;

class Promote extends AbstractPromote

{

}

class Rule extends abstractRule

{

public function across()

{

echo "通过规则,购A\n";

return true;

}

}

class Rule1 extends abstractRule

{

public function across()

{

echo "通过规则,打八折\n";

return true;

}

public function execute()

{

echo "执行行为,订单打八折\n";

}

}

class Action implements ActionInterface

{

public function execute()

{

echo "执行行为,赠B\n";

}

}

//特殊规则Rule和Action分离

$promote = new Promote();

$rule = new Rule();

$action = new Action();

$promote->addRule($rule);

$promote->addAction($action);

//一般规则只有Rule

$promote1 = new Promote();

$rule1= new Rule1();

$promote1->addRule($rule1);

$promoteManage=new PromoteManage();

$promoteManage->addPromote($promote);

$promoteManage->addPromote($promote1);

$promoteManage->apply();

输出

通过规则,购A

执行行为,赠B

通过规则,打八折

执行行为,订单打八折

本作品采用《CC 协议》,转载必须注明作者和本文链接

NOT IS BECAUSE I WANT TO WRITE,

BUT I WANT TO INCREASE,

SO I GO TO WRITE~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值