{"record":{"id":"264dc27b8a2b09c0","repo":"DesignPatternsPHP/DesignPatternsPHP","slug":"invalid-status-name-given","errorCode":null,"errorMessage":"Invalid status name given","messagePattern":"Invalid status name given","errorType":"validation","errorClass":"InvalidArgumentException","httpStatus":null,"severity":"error","filePath":"More/Repository/Domain/PostStatus.php","lineNumber":74,"sourceCode":"     * and is therefore not able to operate well with exceptions\n     */\n    public function toString(): string\n    {\n        return $this->name;\n    }\n\n    private static function ensureIsValidId(int $status)\n    {\n        if (!in_array($status, array_keys(self::$validStates), true)) {\n            throw new InvalidArgumentException('Invalid status id given');\n        }\n    }\n\n\n    private static function ensureIsValidName(string $status)\n    {\n        if (!in_array($status, self::$validStates, true)) {\n            throw new InvalidArgumentException('Invalid status name given');\n        }\n    }\n}\n","sourceCodeStart":56,"sourceCodeEnd":78,"githubUrl":"https://github.com/DesignPatternsPHP/DesignPatternsPHP/blob/54254e0f2a59e27280f81304bce9218e12f97a03/More/Repository/Domain/PostStatus.php#L56-L78","documentation":"PostStatus::ensureIsValidName() requires the status name string to appear exactly in $validStates (strict in_array). fromString() throws InvalidArgumentException('Invalid status name given') for any unrecognized or wrongly-cased name before any Status object is created.","triggerScenarios":"PostStatus::fromString('Draft') (wrong case), fromString('published') if that name is not in $validStates, or fromString('') from empty request/config values.","commonSituations":"User-supplied or API-supplied status strings; typos and casing differences; status names renamed in code but still present in stored data.","solutions":["Pass a name exactly matching a value in PostStatus::$validStates (case-sensitive)","Normalize input with strtolower()/trim() before calling fromString() if the source is user input","Check available names via PostStatus::$validStates before calling"],"exampleFix":"// before\nPostStatus::fromString('Draft'); // case mismatch -> throws\n// after\nPostStatus::fromString(strtolower(trim('Draft')));","handlingStrategy":"validation","validationCode":"if (!in_array($statusName, PostStatus::$validStates, true)) {\n    throw new InvalidArgumentException(\"Unknown post status name: $statusName\");\n}\n$postStatus = PostStatus::fromString($statusName);","typeGuard":"function isValidStatusName(string $name): bool {\n    return in_array($name, PostStatus::$validStates, true);\n}","tryCatchPattern":"try {\n    $status = PostStatus::fromString($inputName);\n} catch (InvalidArgumentException $e) {\n    $status = PostStatus::draft();\n}","preventionTips":["Copy status names from constants, never free-hand","Normalize casing/whitespace of user-supplied names before fromString()","Keep a mapping for renamed statuses in persisted data"],"tags":["php","value-object","enum","validation"],"backgroundTag":"invalid-enum-value","analyzedSha":"54254e0f2a59e27280f81304bce9218e12f97a03","analyzedAt":"2026-09-01T06:00:26.376Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}