繁体   English   中英

PHP 中的条件间隔期

[英]Conditional interval periods in PHP

我正在创建一个针对公司(在刚果)的 PHP 应用程序,最终帮助他们管理员工及其状态。

法律部分由三部分构成,按优先顺序排列:劳动法、集体协议、议事规则。

然而,对我来说最困难的部分是写出法律、协议和议事规则的“条件期限”。 例如,关于固定期限合同的试用期:

法律和集体协议规定:

  • 从0到6个月,试用期为15天。
  • 以上,试用期为1个月。

虽然公司的内部规则规定:

  • 对于类别 1 至 6,试用期为 5 天。
  • 第七类至第八类,试用期为10天。
  • 对于第 9 至第 12 类,试用期为 15 天。

在这个典型的例子中,内部规则基于与法律不同的条件陈述了一些东西。 我很难编写一个可以存储条件类型(持续时间或类别)、间隔(从x天/月/年到y天/月/年,或从类别xy )的类,结果(以日/月/年为单位的持续时间)。

在我的 v1 中,我有这个:

'ftc_trial_periods'  => [
    [
        'left' => 'duration',
        'intervals' => [0, '6 months'],
        'result' => '15 days',
    ],
    '1 months',
];

使用 strtotime 转换日期字符串,结果很难使用。

我正在考虑类似DatePeriod PHP 类的东西,而不是日期,我会使用DateInteval作为间隔(从xy ),但不确定这是否是最好的方法。 在野外有更好的解决方案吗?

我认为您应该将此视为两个单独的问题:

  1. 您如何方便地表示业务规则。
  2. 您如何实现基础日期计算。

根据我的经验, Period是一个优秀的实现部分库。 但是我有一种预感,它可能不是制定和跟踪原始规则的最佳方法。

有专门用于写下这样的业务逻辑的解决方案。 不幸的是,我对那些为您的案例提出具体建议的人没有经验。 在我的头顶上,我想起了Symfony ExpressionLanguageHoa Ruler

最后写了一个composer包: max13/conditional-period

这比我想象的要简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM