我正在创建一个针对公司(位于刚果)的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
作为间隔(从x
到y
),但不确定如果这是最好的方法。有没有更好的解决方案?
答案 0 :(得分:1)
我认为您应该将此问题视为两个单独的问题:
根据我的经验,Period是实现部分的出色库。但是,我有一种直觉,那就是这可能不是制定和跟踪原始规则的最佳方法。
这里有专门用于写下这样的业务逻辑的解决方案。不幸的是,我没有经验为您的案例提出具体建议。我想起了Symfony ExpressionLanguage和Hoa Ruler。
答案 1 :(得分:0)
最后,我编写了一个作曲家程序包:max13/conditional-period
这比我想象的要简单。