value); } /** * 프론트엔드용 라벨 키를 반환합니다. * * @return string */ public function getLabel(): string { return $this->label(); } /** * 모든 값 배열을 반환합니다. * * @return array */ public static function values(): array { return array_column(self::cases(), 'value'); } /** * 프론트엔드용 옵션 배열을 반환합니다. * * @return array */ public static function toSelectOptions(): array { return array_map(fn ($case) => [ 'value' => $case->value, 'label' => $case->label(), ], self::cases()); } /** * PG 결제 여부를 확인합니다. * * 실제 금전 결제인지 판별합니다. DBANK(무통장입금)도 실제 돈이 오가므로 true입니다. * POINT, DEPOSIT, FREE는 내부 처리이므로 false입니다. * * @return bool */ public function isPgPayment(): bool { return ! in_array($this, [self::POINT, self::DEPOSIT, self::FREE]); } /** * PG사 선택이 필요한 결제수단인지 확인합니다. * * DBANK(무통장입금)는 수동 입금확인이므로 PG 불필요. * POINT, DEPOSIT, FREE는 내부 처리이므로 PG 불필요. * * @return bool */ public function needsPgProvider(): bool { return ! in_array($this, [ self::DBANK, self::POINT, self::DEPOSIT, self::FREE, ]); } }