2010-08-17 7 views
0

변경 사항이 어떤 상태 옵션을 가질 수 있는지 결정할 수있는 간단한 함수를 만들었습니다. 예를 들어 '보류 중'상태는 '활성', '거부 됨'및 '제거됨'으로 만 변경할 수 있습니다.상태 전환 확인

나는이 클래스를 사이트 전체에서 비교할 목적으로 상태 열에 필요한 레코드를 참조하는 상수로 저장합니다.

내 '전환'배열은 다음과 같습니다 -이 방법에 대한 의견은 무엇

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() 
); 

? 배열에 상수를 추가하는 것은 좋지 않은 것처럼 보입니다.

상태 요청을 수행 할 수 있는지 확인하기 위해 statusTransitions()에 현재 상태 유형 ID를 전달하여 변경이 유효한지 확인할 수 있습니다.

public static function statusTransitions($statusTypeId) { 
return self::$allowedTransitions[$statusTypeId]; 
} 

답변

0

누군가가 당신보다 더 중요한 의견을 갖는 이유는 확실하지 않습니다. 이 방법이 효과가 있고 편안하다면 함께하십시오. 우리에게 "외부인"이 왜 이렇게 선택했는지 알지 못하는 이유가있을 수 있습니다. (예를 들어 I18N이 ​​이런 좋은 이유가 될 것입니다.)

내 생각에, 당신이하지 말아야 할 일을 총체적으로하지 않는 한, 당신의 코드에서 오류를 억제하도록 그 (것)들을 볼 필요 없다). 당신의 접근 방식에 아무런 이상이 보이지 않습니다.

+0

나는 어디서 왔는지를 볼 수 있지만, 기술적 인 관점에서 보았을 때 클래스 상수로부터 변수의 배열을 생성하는 것을 코딩 할 때 보였다. 결국에는 전이가 포함 된 표를 생성하고 관련 ID를 간단히 질의했습니다. 이렇게하면 나중에 쉽게 수정할 수 있습니다. –