environment('local'), 404); $action = (string) $request->input('_dev_sess_action', ''); // ✅ 자동 타입 변환(익명 함수라 재선언 문제 없음) $parse = function (string $raw) { $s = trim($raw); $lower = strtolower($s); if ($lower === 'true') return true; if ($lower === 'false') return false; if ($lower === 'null') return null; // 정수 if (preg_match('/^-?\d+$/', $s)) { // 앞자리 0이 있는 값(예: 00123)은 문자열 유지하고 싶으면 아래 조건 추가 // if (strlen($s) > 1 && $s[0] === '0') return $raw; $int = (int) $s; if ((string)$int === $s) return $int; } // 실수 if (preg_match('/^-?\d+\.\d+$/', $s)) { return (float) $s; } // JSON if ($s !== '' && (str_starts_with($s, '{') || str_starts_with($s, '['))) { $j = json_decode($s, true); if (json_last_error() === JSON_ERROR_NONE) return $j; } return $raw; }; if ($action === 'flush') { session()->flush(); session()->save(); } elseif ($action === 'put') { $k = trim((string) $request->input('_dev_sess_key', '')); $raw = (string) $request->input('_dev_sess_value', ''); if ($k !== '') { session()->put($k, $parse($raw)); session()->save(); } } return redirect()->to((string) $request->input('_dev_return', '/')); })->name('dev.session'); /* 개발용 페이지 세션 보기*/