Files
Gnuboard7/modules/_bundled/sirsoft-ecommerce/src/Enums/SequenceAlgorithm.php
T
2026-04-01 10:30:52 +09:00

76 lines
1.9 KiB
PHP

<?php
namespace Modules\Sirsoft\Ecommerce\Enums;
/**
* 시퀀스 알고리즘 Enum
*
* 채번 시스템에서 사용할 수 있는 다양한 알고리즘을 정의합니다.
*/
enum SequenceAlgorithm: string
{
/**
* 하이브리드: max(timestamp, lastValue) + increment
*
* - 개별 등록: 시간이 지났으면 새 타임스탬프 기준
* - 일괄 등록: 빠르게 연속 생성 시 시퀀스 증가
* - 상품코드에 적합
*/
case HYBRID = 'hybrid';
/**
* 순수 시퀀스: current_value + increment
*
* - 단순히 현재 값에서 증가
* - 주문번호, 배송번호 등에 적합
*/
case SEQUENTIAL = 'sequential';
/**
* 일별 리셋: 날짜 변경 시 min_value부터 시작
*
* - 매일 1번부터 시작
* - 일별 정산번호 등에 적합
*/
case DAILY = 'daily';
/**
* 타임스탬프: Ymd-His + 밀리초 + 랜덤 보정
*
* - 형식: 20260208-1435226549
* - 주문번호 등 시간 기반 고유 코드에 적합
* - 중복 시 재시도 (최대 10회)
*/
case TIMESTAMP = 'timestamp';
/**
* NanoID: 랜덤 문자열 기반 고유 코드
*
* - 채번테이블 미사용 (DB 트랜잭션/락 불필요)
* - 기본 알파벳: 0-9, A-Z (36자), 기본 길이: 16자
* - 상품코드 등 테이블 기반 채번이 불필요한 경우에 적합
*/
case NANOID = 'nanoid';
/**
* 모든 알고리즘 값을 문자열 배열로 반환
*
* @return array<string>
*/
public static function values(): array
{
return array_column(self::cases(), 'value');
}
/**
* 유효한 알고리즘 값인지 확인
*
* @param string $value 확인할 값
* @return bool
*/
public static function isValid(string $value): bool
{
return in_array($value, self::values(), true);
}
}