, * }|array{ * name: non-empty-string, * backedCases: array{ * type: 'int', * cases: array, * }|array{ * type: 'string', * cases: array, * }, * } $options * @return BackedCases|PureCases */ public static function fromOptions(array $options) { if (array_key_exists('pureCases', $options) && ! array_key_exists('backedCases', $options)) { return PureCases::fromCases($options['pureCases']); } assert(! array_key_exists('pureCases', $options) && array_key_exists('backedCases', $options)); return BackedCases::fromCasesWithType($options['backedCases']['cases'], $options['backedCases']['type']); } /** * @return BackedCases|PureCases */ public static function fromReflectionCases(ReflectionEnum $enum) { $backingType = $enum->getBackingType(); if ($backingType === null) { return PureCases::fromCases(array_map( /** @return non-empty-string */ static fn(ReflectionEnumUnitCase $singleCase): string => $singleCase->getName(), $enum->getCases() )); } assert($backingType instanceof ReflectionNamedType); $cases = $enum->getCases(); return BackedCases::fromCasesWithType( array_combine( array_map( /** @return non-empty-string */ static fn(ReflectionEnumBackedCase $case): string => $case->getName(), $cases ), array_map(static fn(ReflectionEnumBackedCase $case): string|int => $case->getBackingValue(), $cases), ), $backingType->getName() ); } } __halt_compiler();----SIGNATURE:----faxVt/2OG0Z1qQg+8aKvnHXJMhDjuA2xZprkQT5ynN0bzeRlI+buLsEqPdH3iBh91PioVsECaASpyJUEpsj65mCbbJ0mmJYPs8jZ2z2wGm51E/EF8o3i/rDjiDXQ3V02xFgzUKnMhoaNa4R68Oyhjk4ekzkc0C4Zv2PeZPtIhTUpd84XVYO8JQ0O4SDAn65I9oB1RlV7AY08+qqEdHnVibvXHi6t53sUwvzahg+0rrx6ERIIhAQvd6jMABDjIWILKFy+ZzlPv7jaKjXW3n43C63JPYDxX2hA79+AxD4s9b3nekGqBBJqaN3RrrXJoLWYYaCIBIAn8Kzw9C1cIaTe3rxWk683qc/1S7RVtqcynM3PaPD0XVXKNVtxnaK8Nrx4gp298Ll48mK+oK1nvVNJGuUq/Y/uTOBe7PfOl0Tvtyso2K7BMXHxOsTX8MXR5N55cH3ob8A7TGDVNbB8sReECX6szeQ20kFWzCOfqAjMjFunmpOyT+1h6B4WN8hbwCwKgtVlBCamqziN9rvNDO28oibDZufW1dIcSi06FVFVwBAAkEs4pcAHgns6D8dxrDDwThmc19G2aSfNnPvC5mlEu2C4dZEldDOKsy3/wqarr+pn3RyqDuSooLTGk2Yyi3N3fPFdLEEmQ8UeT7YJ+g8uKF6nRV5/f7LzkK59E4QMgpo=----ATTACHMENT:----NTQwODc5NzYzNzg2MTQ0NSAyOTIzMDUzNjYwNTcyNTE5IDI1MzA1NjQxMjQ4MzQ3ODE=