【问题标题】:Conditional interval periods in PHPPHP中的条件间隔周期
【发布时间】:2019-07-18 09:43:28
【问题描述】:

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

法律部分按优先顺序分为 3 个部分:劳动法典、集体协议、程序规则。

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

法律和集体协议规定:

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

虽然公司内部规则规定:

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

在这个典型的例子中,内部规则根据与法律不同的条件来陈述某些事情。我很难写一个类,我可以在其中存储一种条件(持续时间或类别),间隔(从x日/月/年到y日/月/年,或从类别@ 987654324@ 到 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


    【解决方案1】:

    我认为您应该将此视为两个单独的问题:

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

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

    有专门用于写下此类业务逻辑的解决方案。不幸的是,我没有经验为您的案例提出具体建议。我想起了Symfony ExpressionLanguageHoa Ruler

    【讨论】:

    • 感谢您的建议。我认为从 Period 或 DatePeriod 开始(在我的情况下)比使用业务逻辑库更好。其他值很简单,目前只有“取决于类别或持续时间间隔的给定时间段”是一种痛苦。我正在等待最终的其他建议,否则您的回答将是最好的
    【解决方案2】:

    最后我写了一个composer包:max13/conditional-period

    这比我想象的要简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      相关资源
      最近更新 更多