max13/dtion

Dtion 允许您序列化和反序列化条件和结果。例如:如果 $x 在 'A' 和 'C' 之间,结果是 'X'。否则如果 $x 在 'D' 和 'F' 之间,结果是 'Y'。

v1.4.0 2022-09-01 18:51 UTC

This package is auto-updated.

Last update: 2024-08-29 05:56:25 UTC


README

如何序列化和存储多个if/else条件和相应的不同结果值?

Dtion 是一个可序列化的类,允许您存储条件和结果。 Dtion 可以存储 stringintfloatcallableStringable 类型的值作为边界和结果。 callable 边界在比较时被评估,但结果以存储的形式返回。

DtionList 同样可序列化,用于存储一系列 Dtion,允许您找到符合给定标准的 Dtion(如果有的话)。 DtionList 还可以直接返回匹配标准的 resultFor

例如,您可以存储以下条件:

  • 如果员工类别在 1 到 5 之间,则 提前通知1 个月
  • 如果员工类别在 6 到 7 之间,则 提前通知2 个月
  • 如果员工类别在 8 到 12 之间,则 提前通知3 个月

以下是一个使用日期区间作为条件的另一个示例

  • 如果 固定期限合同06 个月,则 试用期15 天
  • 超过 6 个月,试用期是 1 个月

使用 Dtion 将这些区间(作为 DateIntervalCarbonInterval)表示为条件非常简单。请参见下面的示例。

安装

您可以使用 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();

需要帮助?

打开一个问题。

现在尽情享受吧。