max13 / dtion
Dtion 允许您序列化和反序列化条件和结果。例如:如果 $x 在 'A' 和 'C' 之间,结果是 'X'。否则如果 $x 在 'D' 和 'F' 之间,结果是 'Y'。
v1.4.0
2022-09-01 18:51 UTC
Requires
- php: ^7.0 || ^8.0
- ext-json: *
Requires (Dev)
- fakerphp/faker: ^1.20
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-08-29 05:56:25 UTC
README
如何序列化和存储多个if/else条件和相应的不同结果值?
Dtion 是一个可序列化的类,允许您存储条件和结果。 Dtion 可以存储 string、int、float、callable 和 Stringable 类型的值作为边界和结果。 callable 边界在比较时被评估,但结果以存储的形式返回。
DtionList 同样可序列化,用于存储一系列 Dtion,允许您找到符合给定标准的 Dtion(如果有的话)。 DtionList 还可以直接返回匹配标准的 resultFor。
例如,您可以存储以下条件:
- 如果员工类别在 1 到 5 之间,则 提前通知 为 1 个月。
- 如果员工类别在 6 到 7 之间,则 提前通知 为 2 个月。
- 如果员工类别在 8 到 12 之间,则 提前通知 为 3 个月。
以下是一个使用日期区间作为条件的另一个示例
- 如果 固定期限合同 从 0 到 6 个月,则 试用期 为 15 天。
- 超过 6 个月,试用期是 1 个月。
使用 Dtion 将这些区间(作为 DateInterval 或 CarbonInterval)表示为条件非常简单。请参见下面的示例。
安装
您可以使用 composer: composer require max13/dtion
使用方法
使用上面的示例
use Dtion\Dtion; use Dtion\DtionList; $priorNoticeList = new DtionList([ new Dtion(1, 5, new DateInterval('P1M'), new Dtion(6, 7, new DateInterval('P2M'), new Dtion(8, 12, new DateInterval('P3M'), ]); $category = 2; $p = $priorNoticeList->resultFor($category); // returns DateInterval('P1M') $dtion = $priorNoticeList->find($category); // returns the corresponding Dtion, or null if not found. $result = $dtion->result();
需要帮助?
打开一个问题。
现在尽情享受吧。