, * }|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:----IIwRTzyDTjauuWarHM4awsKYJN16T4n8GSUlWvCA9UWbw2lDCpRwpv4QH4RKmfdCWaG6o7d6GCPAjCnmwXqANKkSJ56wNAl0x7SLES1sPwYeSbN/LoD2gqMpFX1MC4KRNGdCcELfAKcHOPLZhpxWDI1SN9x5rinRvNbBf66fU9B8TPMhnQA1U5jyvBrs1cFsHjSMlWn7yfz6q4R19dQGup7cZuJaSEMfr3PM6XQRMwFBimZH2gQWn71xmt9Q32yIlabZvDGviTvBTCgj+4UCcMaVRwRMOTV+YiPy1dBLKZ3BwN5EjuL6Xd4c0N7jplw47TPVejIt34vW7Mqi1bTLsyKRXrTEG8M46yG9sx9PqebigMdV8sBMNni7uDSr8DzgR+lbmhFUm12boGMEsHB/kyKAH18jcadEoJy5mfmW1l1YaBAiLDPEvV6+fDw6UGXZ0qso/zK6XMm4qnj1/LcFce5w2rHGIDGSR7dsHnjYwVDHxT0ngFMX6QO54aj8EvJWCYwgm8D0pyqxPSi4cV6+cVq8DQciDCjjwC4xSpL1j1n9Yi9iOyYRC4m0rD92sQRlCynifvW38qruyQgt8gGPEKy1xC0PoA/1iLW53WBFUNUjnN8esrHvqokOsfsYESfDjJ1DObusOVal51KFqNCmTrpK5hrLttNrg0r52jrjiO8=----ATTACHMENT:----MjA5NjgwNTEyMjQ2OTEyNiAxMjMzOTQ2Mjc4MjY1ODU4IDU5NDA2MTAxMDg3MzUwOTM=