規則引擎RulerZ用法及實現原理解讀

2021-09-12 15:29:21 字數 1842 閱讀 8963

composer安裝:composer require 'kphoen/rulerz'

使用:use rulerz\compiler\compiler;

use rulerz\rulerz;

use rulerz\target\native\native;

public function getrulerzchecker()

])]);

return $rulerz;

}我們需要搜尋、校驗的資料:

1、批量匹配,

$datas    = [

['pseudo' => 'joe', 'fullname' => 'joe la frite', 'gender' => 'm', 'points' => 20],

['pseudo' => 'moe', 'fullname' => 'moe, from the bar!', 'gender' => 'm', 'points' => 200],

['pseudo' => 'hazel', 'fullname' => 'hazel, from the hazel!', 'gender' => 'm', 'points' => 100],

['pseudo' => 'alice', 'fullname' => 'alice, from... you know.', 'gender' => 'f', 'points' => 100],

['pseudo' => 'alice', 'fullname' => 'alice, from... you know.', 'gender' => 'f', 'points' => 20],

];$rule       = "gender = :gender and points > :min_points";

$parameters = [

'min_points' => 30,

'gender'     => 'm',

];$rulerz     = $this->getrulerzchecker();

$result     = iterator_to_array(

$rulerz->filter($datas, $rule, $parameters) // the parameters can be omitted if empty

);最後的到的結果

array(2) 

[1]=>

array(4)

}

2、判斷資料是否符合要求:

$rulerz->satisfies($data, $rule, $parameters);

// 返回布林值,true表示滿足

$data    =['pseudo' => 'moe', 'fullname' => 'moe, from the bar!', 'gender' => 'm', 'points' => 200];

$rule       = "gender = :gender and points > :min_points";

$parameters = [

'min_points' => 30,

'gender'     => 'm',

];$rulerz     = $this->getrulerzchecker();

$result     = $rulerz->satisfies($data, $rule, $parameters);//bool(true)

上文中contains表示的是用系統函式strstr()來判斷$a中是否包含$b字元,由於編譯後的**是通過字串生成的,所以你在這個匿名函式中必須要用字串表達判斷邏輯,這也是其缺點之一。

規則引擎實現

隨著業務的發展規則增加 隨著業務的複雜規則複雜 隨著業務的發展規則變化不會非常大 變化也存在侷限性 實現的解決的問題 高復用 高靈活 可擴充套件 基礎方法更加簡單,實現誤區就為了高靈活性犧牲介面的效能。建立 config package目錄,儲存每個規則對應的配置資訊,實現靈活性 data publ...

位運算規則及用法

位運算用法及例項 與兩個都為1 是1 其他都是0 用於二進位製取位 比如 乙個數 1 就是取二進位制的最末位 可以用來判斷數的奇偶,取到的數若為奇數為1 偶數取到的是0 異或不同為1 相同為0 兩次異或同乙個數的 結果不變 abb a 一般用於簡單的加密 原資料與金鑰異或一下成新資料運輸 新資料再與...

規則引擎實現生產排程系統

生產排程系統是製造企業 系統的重要組成部分,對應於生產管理系統的短期計畫安排,主要目標是通過良好的作業加工排序,最大限度減少生產過程中的準備時間,優化某一項或幾項生產目標,為生產計畫的執行和控制提供指導。在不同的問題環境中,生產排程的優化目標也不同。在生產製造企業中影響生產排程的因素很多 比如裝置 ...