- var_dump: documentation ( source)
- defined: documentation ( source)
- constant: documentation ( source)
- sprintf: documentation ( source)
<?php
namespace App\Localization;
enum Locale
{
case ru;
case en;
public static function tryFromName(string $name): ?self
{
$constant = self::class.'::'.$name;
if (\defined($constant)) {
return \constant($constant);
}
return null;
}
public static function fromName(string $name): self
{
return self::tryFromName($name)
?? throw new \ValueError(sprintf(
'"%s" is not a valid name for enum "%s"',
$name,
self::class,
));
}
}
var_dump(Locale::tryFromName('ru'));
var_dump(Locale::tryFromName('fr'));
var_dump(Locale::fromName('en'));
var_dump(Locale::fromName('es'));