PHP 中的条件间隔周期
Conditional interval periods in PHP
我正在创建一个 PHP 面向公司(在刚果)的应用程序,最终帮助他们管理员工及其状态。
法律部分由三部分组成,按优先顺序排列:劳动法、集体协议、程序规则。
对我来说,最难的部分是编写法律、协议和程序规则中的 "conditional periods"。比如关于固定期限合同的试用期:
法律和集体协议规定:
- From 0 to 6 months, the trial period is 15 days.
- Above, the trial period is 1 month.
虽然公司的内部规则规定:
- For categories 1 to 6, the trial period is 5 days.
- For categories 7 to 8, the trial period is 10 days.
- For categories 9 to 12, the trial period is 15 days.
在这个典型的例子中,内部规则根据与法律不同的条件陈述了一些事情。我很难写一个 class,我可以在其中存储一种条件(持续时间或类别)、间隔(从 x
day/month/year 到 y
day/month/year,或从类别 x
到 y
),结果(day/month/year 中的持续时间)。
在我的 v1 中,我有这个:
'ftc_trial_periods' => [
[
'left' => 'duration',
'intervals' => [0, '6 months'],
'result' => '15 days',
],
'1 months',
];
用strtotime转换日期字符串,结果好用
我正在考虑 DatePeriod
PHP class 之类的东西,而不是日期,我会使用 DateInteval
作为间隔(从 x
y
) 但不确定这是否是最佳方法。在野外有更好的解决方案吗?
我认为你应该将其视为两个 单独的问题:
- 你如何方便地表示业务规则。
- 你如何实现基础日期计算。
根据我的经验 Period 是实现部分的优秀库。但是我有一种预感,它可能不是制定和跟踪原始 rules.
的最佳方法
有专门用于编写这样的业务逻辑的解决方案。不幸的是,我没有经验为您的案例提出具体建议。我想起了 Symfony ExpressionLanguage and Hoa Ruler.
最后写了一个composer包:max13/conditional-period
比我想象的要简单。
我正在创建一个 PHP 面向公司(在刚果)的应用程序,最终帮助他们管理员工及其状态。
法律部分由三部分组成,按优先顺序排列:劳动法、集体协议、程序规则。
对我来说,最难的部分是编写法律、协议和程序规则中的 "conditional periods"。比如关于固定期限合同的试用期:
法律和集体协议规定:
- From 0 to 6 months, the trial period is 15 days.
- Above, the trial period is 1 month.
虽然公司的内部规则规定:
- For categories 1 to 6, the trial period is 5 days.
- For categories 7 to 8, the trial period is 10 days.
- For categories 9 to 12, the trial period is 15 days.
在这个典型的例子中,内部规则根据与法律不同的条件陈述了一些事情。我很难写一个 class,我可以在其中存储一种条件(持续时间或类别)、间隔(从 x
day/month/year 到 y
day/month/year,或从类别 x
到 y
),结果(day/month/year 中的持续时间)。
在我的 v1 中,我有这个:
'ftc_trial_periods' => [
[
'left' => 'duration',
'intervals' => [0, '6 months'],
'result' => '15 days',
],
'1 months',
];
用strtotime转换日期字符串,结果好用
我正在考虑 DatePeriod
PHP class 之类的东西,而不是日期,我会使用 DateInteval
作为间隔(从 x
y
) 但不确定这是否是最佳方法。在野外有更好的解决方案吗?
我认为你应该将其视为两个 单独的问题:
- 你如何方便地表示业务规则。
- 你如何实现基础日期计算。
根据我的经验 Period 是实现部分的优秀库。但是我有一种预感,它可能不是制定和跟踪原始 rules.
的最佳方法有专门用于编写这样的业务逻辑的解决方案。不幸的是,我没有经验为您的案例提出具体建议。我想起了 Symfony ExpressionLanguage and Hoa Ruler.
最后写了一个composer包:max13/conditional-period
比我想象的要简单。