src/Enums/WithEnhances.php
<?php
declare(strict_types=1);
namespace Php\Support\Enums;
/**
* @mixin \UnitEnum
*/
trait WithEnhances
{
public static function casesToString(callable $decorator, string $delimiter = ', '): string
{
return implode(
$delimiter,
array_map($decorator, self::cases())
);
}
/**
* @return mixed[]
*/
public static function values(): array
{
return array_map(static fn(self $enumItem) => $enumItem->value, self::cases());
}
public static function names(): array
{
return array_map(static fn(self $enumItem) => $enumItem->name, self::cases());
}
public static function hasName(string $value): bool
{
return in_array($value, static::names(), true);
}
public static function toKeyValueArray(): array
{
$list = [];
foreach (self::cases() as $case) {
$list[$case->value] = $case->name;
}
return $list;
}
public static function toValueKeyArray(): array
{
$list = [];
foreach (self::cases() as $case) {
$list[$case->value] = $case->name;
}
return $list;
}
}