hoa\ruler 是匹配特定語法的字串,hoa\ruler\ruler 定義語言語法描述,hoa\ruler\context 定義變數值,
hoa\ruler\ruler::assert執行並獲得結果,結果是乙個布林值。
tp5 框架**:
use hoa\ruler\context;
use hoa\ruler\ruler;
class index
; $r = $ruler->assert($rule, $context);
print_r($r);
}}grammar(語法):
語法說明
'foo'
,"foo"
,'f\'oo'
字串
true
,false
,null
預先定義的常量
4.2
小數
42
整數
['foo', true, 4.2, 42]
陣列
sum(1, 2, 3)
呼叫函式並給定引數
points
變數points['x']
陣列指定元素
line.pointa
訪問物件屬性
line.length()
訪問物件方法
and
,or
,xor
,not
邏輯運算子
=
,!=
,>
,<
,>=
,<=
比較運算子
is
,in
成員操作符
context(物件):
定義規則中變數的值。
1:常量、數字、字串等標量,或陣列、物件等結構化型別。
2:也可以是函式返回的值。
use hoa\ruler\context;
use hoa\ruler\ruler;
use hoa\ruler\dynamiccallable;
class index
; var_dump(
$context['int'],
$context['int'],
$context['int'],
$i);
$i = 0;
$context['int'] = new dynamiccallable(
function () use (&$i)
);var_dump(
$context['int'],
$context['int'],
$context['int'],
$i);
}}>>>
int(1) int(1) int(1) int(1) int(1) int(2) int(3) int(3)
add functions(新增自定義方法):
樣例如下:
class user
}use hoa\ruler\context;
use hoa\ruler\ruler;
use hoa\ruler\dynamiccallable;
use hoa\ruler\visitor\asserter;
class index
; $ruler = new ruler();
$rule = 'logged(user) and points > 30';
$context = new context();
$context['user'] = new user();
$context['points'] = 42;
$asserter = new asserter();
$asserter->setoperator('logged', $logged);
$ruler->setasserter($asserter);
//簡寫:$ruler->getdefaultasserter()->setoperator('logged', $logged);
print_r($ruler->assert($rule, $context));
}}>>>
1
mysql 規則引擎 為什麼使用規則引擎?
一天,朱斯參加了一場code review研討會。會上的一群人正在討論著如何對祖傳 進行變更,大家你一言,我一語,場面十分熱鬧!突然,只見人群中的乙個人滿面愁容,說道 昨天在專案中看到下面這樣一段 分支太多了!維護起來很煩啊!if day 周一 else if day 周二 else if day ...
規則引擎pyke
1.官網 2.安裝第三方包 pyenv global anaconda3 4.2.0 pip install htmltemplate 3.原始碼安裝pyke pyenv global anaconda3 4.2.0 cd pyke3 1.1.1 python setup.py build pyth...
規則引擎 easy rules
直接看官方的例子。經典的例子 大致的步驟 建立各種規則,即rule.可以通過 pojo 或 rulebuilder api 兩種方式建立。建立規則容器rules rules new rules 註冊建立的規則rules.add rule 建立流,即facts.流控制規則的引數輸入.facts fac...