我正在创建一个针对公司(在刚果)的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
)但不确定它是否是最好的方法。在野外有更好的解决方案吗?
我认为你应该将此视为两个独立的问题:
根据我的经验,Period是一个优秀的实施部分库。但是,我有一种预感,它可能不是制定和跟踪原始规则的最佳方法。
有专门用于写下这样的业务逻辑的解决方案。不幸的是,我对那些为您的案例提出具体建议的人没有经验。在我的脑海中,我记得Symfony ExpressionLanguage和Hoa Ruler。
最后,我写了一个作曲家包:max13/conditional-period
它比我想象的要简单。