
判断逻辑越写越乱,我干脆做了个自己的规则引擎
不知道你有没有这种感觉:一个业务功能看起来很简单,但判断条件却一大堆。
什么用户状态、配置项、商品属性、会员等级……
一大堆 if
/ else
交织在一起,越写越乱,稍微改一个逻辑就要担心影响其他地方。
我之前就遇到这样的情况,一开始还能忍,后来干脆决定:不如自己写一个简单的规则引擎,专门用来处理这些组合判断。
于是就有了这个项目:hejunjie/simple-rule-engine
🚀 这个规则引擎能干嘛?
一句话总结:
这是一个轻量、易用的 PHP 规则引擎,支持多条件组合、动态规则执行,适合业务规则判断、数据校验等场景。
适合用在你项目中的这些地方:
- 复杂业务的多条件判断(比如用户是否满足某个活动要求)
- 数据入库前的规则校验
- 自定义逻辑的配置化、结构化处理
- 写得一手 if 地狱,想抽出来整整齐齐 😅
🌟 为什么要做它?
在实际业务中,很多业务判断逻辑其实都可以归纳为:“一堆字段 + 一些规则 + 多个条件组合”。
原本我们可能是这么写的:
1 | if ( |
现在可以这样:
1 | // 定义规则 |
是不是整洁多了?而且如果你把规则放数据库,就能实现“业务判断配置化”了。
🧩 项目特点
- ✅ 轻量易用:无依赖,无框架限制,简单几行就能用
- 🔌 工厂注册机制:你可以自己写新的操作符(Operator)注册进来
- 📦 内置常用操作符:多数常用操作符都支持(可见文章末尾操作符支持列表)
- 🧠 可组合、多条件支持:支持 AND / OR 关系组合,扩展多套规则逻辑很方便
📦 安装方法
1 | composer require hejunjie/simple-rule-engine |
🛠️ 示例代码
1 | use Hejunjie\SimpleRuleEngine\Rule; |
🔌 自定义操作符
你可以自由的去实现自己的判断逻辑,指定一个操作符,并自由的插入到你的规则中
仅需要实现 OperatorInterface
接口,并通过 OperatorFactory
注册即可:
1 | use Hejunjie\SimpleRuleEngine\Interface\OperatorInterface; |
🧩 内置操作符列表
操作符 | 描述 | 额外说明 |
---|---|---|
== |
等于 | 无 |
!= |
不等于 | 无 |
> |
大于 | 无 |
>= |
大于等于 | 无 |
< |
小于 | 无 |
<= |
小于等于 | 无 |
in |
包含于集合中 | 数组:[内容 1,内容 2,…] |
not_in |
不包含于集合中 | 数组:[内容 1,内容 2,…] |
contains |
包含字符串 | 无 |
not_contains |
不包含字符串 | 无 |
start_swith |
以指定字符串开头 | 无 |
end_swith |
以指定字符串结尾 | 无 |
between |
在指定范围内 | 数组:[最大值,最小值] |
not_between |
不在指定范围内 | 数组:[最大值,最小值] |
before_date |
日期早于 | 任意常规日期格式,包括时间戳均可 |
after_date |
日期晚于 | 任意常规日期格式,包括时间戳均可 |
date_equal |
日期相等 | 任意常规日期格式,包括时间戳均可 |
🤔 总结一下
这个规则引擎不是为了解决多么高级的技术难题,它只是一个更优雅的解决方式。
如果你也遇到过类似的 if/else 困扰,希望这个小工具能帮上你一点忙。
欢迎 Star、Issue、PR,一起完善它 🙌
如果你觉得有帮助,点个赞我会更有动力更新下去~
- 感谢您的赞赏
赞赏名单
谢谢老板,给您磕一个
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自星河避难所
评论 ()