Я создал простую функцию, которая позволяет мне определять, какие параметры состояния могут иметь изменение.Например, статус «Ожидание» может быть изменен только на «Активно», «Отклонено» и «Удалено».
В моем классе я храню их как константы, которые для целей ссылаются на необходимую запись в столбце состояниясравнения по всему сайту.
Мой массив 'transition' имеет следующее: -
protected static $allowedTransitions=array(
Booking::STATUS_ACTIVE=>array(Booking::STATUS_REVOKED),
Booking::STATUS_PENDING=>array(Booking::STATUS_ACTIVE, Booking::STATUS_REJECTED, Booking::STATUS_REVOKED),
Booking::STATUS_REJECTED=>array(Booking::STATUS_ACTIVE, Booking::STATUS_REVOKED),
Booking::STATUS_REVOKED=>array()
);
Каково мнение об этом подходе?Не очень хорошая идея добавлять константы в массив.
Чтобы проверить, может ли быть выполнен запрос статуса, я передаю текущий тип статуса Id в statusTransitions (), что позволяет мнеопределить, действительно ли изменение.
public static function statusTransitions($statusTypeId) {
return self::$allowedTransitions[$statusTypeId];
}