[英]Conditional interval periods in PHP
我正在创建一个针对公司(在刚果)的 PHP 应用程序,最终帮助他们管理员工及其状态。
法律部分由三部分构成,按优先顺序排列:劳动法、集体协议、议事规则。
然而,对我来说最困难的部分是写出法律、协议和议事规则的“条件期限”。 例如,关于固定期限合同的试用期:
法律和集体协议规定:
- 从0到6个月,试用期为15天。
- 以上,试用期为1个月。
虽然公司的内部规则规定:
- 对于类别 1 至 6,试用期为 5 天。
- 第七类至第八类,试用期为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 。
最后写了一个composer包: max13/conditional-period
这比我想象的要简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.