- array_keys: documentation ( source)
- constant: documentation ( source)
<?php
final class Gender {
const UNKNOWN = 0;
const MALE = 1;
const FEMALE = 2;
const NOT_APPLICABLE = 9;
public static function from($value) {
static $names;
if ( ! $names) {
$class = new ReflectionClass(self::class);
$constants = $class->getConstants();
$names = array_keys($constants);
}
foreach ($names as $name) {
if (constant(__CLASS__ . '::' . $name) === $value) {
return $name;
}
}
throw new InvalidArgumentException('No matching gender for value ' . $value);
}
// no instances allowed
private function __construct() {}
}
echo Gender::from(Gender::FEMALE);
?>