| @@ 27-39 (lines=13) @@ | ||
| 24 | $value = $enum->getValue(); |
|
| 25 | $r = new \ReflectionClass($enum); |
|
| 26 | ||
| 27 | $constants = array_filter($r->getConstants(), static function (string $k) use ($r, $enum) { |
|
| 28 | if (PHP_VERSION_ID >= 70100) { |
|
| 29 | // ReflectionClass::getReflectionConstant() is only available since PHP 7.1 |
|
| 30 | $rConstant = $r->getReflectionConstant($k); |
|
| 31 | $public = $rConstant->isPublic(); |
|
| 32 | $value = $rConstant->getValue(); |
|
| 33 | } else { |
|
| 34 | $public = true; |
|
| 35 | $value = \constant("{$r->getName()}::$k"); |
|
| 36 | } |
|
| 37 | // Only keep public constants, for which value matches enumerable values set: |
|
| 38 | return $public && $enum::accepts($value); |
|
| 39 | }, ARRAY_FILTER_USE_KEY); |
|
| 40 | ||
| 41 | $rConstants = array_flip($constants); |
|
| 42 | ||
| @@ 274-287 (lines=14) @@ | ||
| 271 | $r = new \ReflectionClass($enumFqcn); |
|
| 272 | $constants = array_filter( |
|
| 273 | $r->getConstants(), |
|
| 274 | static function (string $k) use ($r, $enumFqcn) { |
|
| 275 | if (PHP_VERSION_ID >= 70100) { |
|
| 276 | // ReflectionClass::getReflectionConstant() is only available since PHP 7.1 |
|
| 277 | $rConstant = $r->getReflectionConstant($k); |
|
| 278 | $public = $rConstant->isPublic(); |
|
| 279 | $value = $rConstant->getValue(); |
|
| 280 | } else { |
|
| 281 | $public = true; |
|
| 282 | $value = \constant("{$r->getName()}::$k"); |
|
| 283 | } |
|
| 284 | ||
| 285 | // Only keep public constants, for which value matches enumerable values set: |
|
| 286 | return $public && $enumFqcn::accepts($value); |
|
| 287 | }, |
|
| 288 | ARRAY_FILTER_USE_KEY |
|
| 289 | ); |
|
| 290 | ||