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 一般用於簡單的加密 原資料與金鑰異或一下成新資料運輸 新資料再與...
規則引擎實現生產排程系統
生產排程系統是製造企業 系統的重要組成部分,對應於生產管理系統的短期計畫安排,主要目標是通過良好的作業加工排序,最大限度減少生產過程中的準備時間,優化某一項或幾項生產目標,為生產計畫的執行和控制提供指導。在不同的問題環境中,生產排程的優化目標也不同。在生產製造企業中影響生產排程的因素很多 比如裝置 ...