| 1234567891011121314151617181920212223242526272829303132 | <?php
namespace App\Enums\Concerns;
trait Utilities
{
    public static function caseValues(): array
    {
        return array_column(static::cases(), 'value');
    }
    public static function caseNames(): array
    {
        return array_column(static::cases(), 'name');
    }
    public static function constantNames(): array
    {
        $allConstants = array_keys((new \ReflectionClass(static::class))->getConstants());
        $caseNames = static::caseNames();
        return array_values(array_diff($allConstants, $caseNames));
    }
    public static function constantValues(): array
    {
        $allConstants = array_values((new \ReflectionClass(static::class))->getConstants());
        $caseValues = static::caseValues();
        return array_values(array_diff_key($allConstants, $caseValues));
    }
}
 |