init(); $this->sweepFlash(); // flash 생명주기 관리 } // 세션 시작 public function init(): void { if (session_status() === PHP_SESSION_NONE) { if (!is_dir(APP_SESSION_PATH)) { mkdir(APP_SESSION_PATH, APP_SESSION_PERMISSION, true); } session_save_path(APP_SESSION_PATH); session_start(); } } // 일반 세션 저장 public function set(string $key, $value): void { $_SESSION[$key] = $value; } // 일반 세션 가져오기 public function get(string $key): mixed { return $_SESSION[$key] ?? null; } // 일반 세션 제거 public function remove(string $key): void { unset($_SESSION[$key]); } // flash 메시지 저장 (다음 요청까지) public function flash(string $key, $value): void { $_SESSION['_flash_new'][$key] = $value; } // flash 메시지 가져오기 public function getFlash(string $key): mixed { return $_SESSION['_flash_old'][$key] ?? null; } // flash 메시지 존재 여부 public function hasFlash(string $key): bool { return isset($_SESSION['_flash_old'][$key]); } // 입력값을 flash로 저장 public function flashInput(array $input): void { $_SESSION['_flash_new']['_old_input'] = $input; } // 이전 입력값 가져오기 public function old(string $key, $default = null): mixed { return $_SESSION['_flash_old']['_old_input'][$key] ?? $default; } // 모든 flash 제거 (사용 후 직접 호출할 경우) public function clearFlash(): void { unset($_SESSION['_flash_new']); unset($_SESSION['_flash_old']); } // 요청 시작 시 flash 생명주기 관리 (자동 호출) private function sweepFlash(): void { $_SESSION['_flash_old'] = $_SESSION['_flash_new'] ?? []; unset($_SESSION['_flash_new']); } }