karamvirs / here-trigger
:package_description
Requires
- illuminate/support: ~7|~8
Requires (Dev)
- orchestra/testbench: ~5|~6
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-04 14:11:34 UTC
README
该软件包提供了一种方便的方法来定义复杂的规则,以有条件地处理从 Laravel 应用程序的任何部分触发的某些操作。
示例
- 例如,在电子商务网站上处理订单时,评估某些规则,如果为真,则发送促销电子邮件、优惠券等。
- 当信用管理服务上有新的信用报告可用时,评估是否应将客户移动到不同的组。
安装
通过 Composer
$ composer require karamvirs/here-trigger
$ php artisan vendor:publish --provider="Karamvirs\HereTrigger\HereTriggerServiceProvider"
概述
在应用程序的任何位置,您都可以通过触发名称和数据数组来调度 HereTriggerProcessor 任务。
...
...
use App\Jobs\HereTriggerProcessor;
...
...
HereTriggerProcessor::disptach('new_order', ['user' => <User Object>, 'order' => <Order Object>])
...
...
注意:数据数组必须包含将在配置中定义的筛选器中使用的所有数据对象。键名必须与 here-trigger 配置中筛选器部分下定义的键名相匹配
当作业处理时,代码会查看配置文件(here-trigger.php),并检索此触发器的操作。在我们的示例配置中,它们是:['high_value_customer', 'young_international_customer']
评估每个操作(在配置中的 'actions' 键下)的规则表达式,如果为真,则调度在处理器下指定的作业。
工作原理
当您运行 vendor:publish 命令时,以下 3 个文件将被发布
- config/here-trigger.php
- app/Helpers/HereTriggerHelper.php
- app/Jobs/HereTriggerProcessor.php
让我们逐一讨论它们。
config/here-trigger.php
helper_class
设置定义所有筛选值函数的辅助类的路径。如果您想将 HereTriggerHelper 文件移动到其他位置,可以自由更改它。
filters
包含将评估其属性以定义操作规则下的条件的实体或数据对象。在默认示例中,您将在筛选器下看到 3 个条目:user、order、wishlist
在筛选器下的每个实体都有一个筛选器名称、实际的筛选器和用于评估该筛选器值的函数名称。
例
'total_spent_till_date_more_than_1500' => ['filter' => ['total_spent_till_date', operators::GREATER_THAN, 1500], 'value_function' => 'userTotalSpendTillDate'],
total_spent_till_date_more_than_1500 - 是在操作下的规则表达式中引用的筛选器名称。
'filter' => ['total_spent_till_date', operators::GREATER_THAN, 1500] - 定义实际的筛选器。这里说的是,用户花费的总金额应超过 1500。
'value_function' => 'userTotalSpendTillDate' - 告诉函数名称,您将在辅助文件(HereTriggerHelper.php)中定义,并将用于计算该属性(在这种情况下是 total_spent_till_date)的值。如果没有指定值函数,则假定该属性可直接在传递的对象上访问。
actions
操作包含一个规则和一个处理器数组
规则是一个必须评估为真的表达式,处理器才能运行。表达式可以有括号,但不能嵌套相同类型的括号。这意味着您可以使用:[ xyz && { abc OR (mno && pqr)}] 但不能使用:{xyz {abc }}
表达式中的术语是定义在筛选器部分中的实际筛选器名称。
'processors' 是一个包含您将定义的作业的数组,当规则评估为真时,将执行这些作业的代码。
示例配置提到了 2 个这样的作业,但没有实现它们:App\Jobs\Send15PercentDiscount App\Jobs\HighValueNotification
变更日志
有关最近更改的更多信息,请参阅 变更日志。
贡献
请参阅contributing.md以获取详细信息和工作清单。
安全性
如果您发现任何与安全相关的问题,请发送电子邮件至author@email.com,而不是使用问题跟踪器。
许可证
MIT。有关更多信息,请参阅许可证文件。