Условные интервалы в PHP - PullRequest
       55

Условные интервалы в PHP

0 голосов
/ 25 февраля 2019

Я создаю приложение для PHP, предназначенное для компаний (в Конго), в конечном итоге помогая им управлять сотрудниками и их статусами.

Юридическая часть состоит из 3 частей в порядке приоритета: Трудовой кодексКоллективный договор, правила процедуры.

Самое сложное для меня пока состоит в том, чтобы написать «условные сроки» закона, соглашений и правил процедуры.Например, в отношении испытательных периодов срочного контракта:

Закон и коллективный договор гласят:

  • От 0 до 6 месяцев испытательный срок составляет 15 дней.
  • Выше, пробный период составляет 1 месяц.

В то время как внутренние правила компании гласят:

  • Для категорий 16, испытательный период составляет 5 дней.
  • Для категорий 7–8 испытательный срок составляет 10 дней.
  • Для категорий 9–12 испытательный период составляет 15 дней.

В этом типичном примере внутренние правила устанавливают нечто, основанное на иных условиях, чем закон.Мне трудно написать класс, в котором я могу сохранить тип условия (продолжительность или категория), интервал (от x день / месяц / год до y день / месяц / год или из категории *От 1031 * до y), результат (продолжительность в день / месяц / год).

В моем v1 у меня было это:

'ftc_trial_periods'  => [
    [
        'left' => 'duration',
        'intervals' => [0, '6 months'],
        'result' => '15 days',
    ],
    '1 months',
];

Использование strtotime для преобразования датыстроки, которые оказалось трудно использовать.

Я думаю о чем-то вроде DatePeriod PHP-класса, вместо дат я бы использовал DateInteval в качестве интервалов (от x до y), но не уверен, что это будет лучшим подходом.Есть ли лучшие решения в дикой природе?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

В конце я написал пакет для композитора: max13 / условный период

Это было проще, чем я думал.

0 голосов
/ 25 февраля 2019

Я думаю, вы должны рассматривать это как две отдельные проблемы:

  1. Как вы удобно представляете бизнес-правила.
  2. Как реализовать вычисления базовой даты.

Из моего опыта Period - отличная библиотека для реализации части.Однако у меня есть догадка, что, возможно, это не лучший подход для формулирования и отслеживания ваших оригинальных правил .

Существуют решения, специально предназначенные для записи бизнес-логики, подобные этой.К сожалению, у меня нет опыта, чтобы составить конкретную рекомендацию для вашего случая.Я вспомнил язык выражения Symfony и правитель Хоа .

...