PHP中的条件间隔期

问题描述 投票:1回答:2

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

法律部分按优先顺序分为三部分:劳动法,集体协议,程序规则。

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

法律和集体协议规定:

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

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

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

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

在我的v1中,我有这个:

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

使用strtotime转换日期字符串,结果证明难以使用。

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

php conditional intervals period
2个回答
1
投票

我认为你应该将此视为两个独立的问题:

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

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

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


0
投票

最后,我写了一个作曲家包:max13/conditional-period

它比我想象的要简单。

© www.soinside.com 2019 - 2024. All rights reserved.