EnumConcern - A PHP Package for Effortless Enumeration Handling

EnumConcern - A PHP Package for Effortless Enumeration Handling

ยท

15 min read

EnumConcern - A PHP Package for Effortless Enumeration Handling ๐Ÿ“ฆ โœจ

EnumConcern is a PHP package designed to enhance the usage of PHP's Enum feature with a set of convenient methods. This package includes a Trait file that enables easy handling of Enums.

Powered by Laravel Collections to make you feel at home. ๐Ÿงก


Installation

To install EnumConcern package, require it via composer:

composer require emreyarligan/enum-concern

Now, you can use EnumConcern in your Enums.

namespace App\Enums;

use EmreYarligan\EnumConcern\EnumConcern;

enum TestEnum: string
{
    use EnumConcern;
    ...
    ...
}

Methods

MethodDescriptionParametersReturn Type
allGet all the values as a Collection.method = '' (optional)Collection
allAsArrayGet all the values as an array.method = '' (optional)array
hasCheck if a specific value exists.value, method = '' (optional)bool
caseExistsCheck if a specific case (key / name) exists.value, method = '' (optional)bool
allCasesExistsCheck if all the given cases (keys / names) exist.cases, method = '' (optional)bool
anyCaseExistsCheck if any of the given cases (keys / names) exist.cases, method = '' (optional)bool
caseByValueGet the case (key / name) for a specific value.value, method = '' (optional)string
toJsonConvert all the values to a JSON string.method = '' (optional),jsonEncodeOption (optional)string
toArrayConvert all the values to an array.method = '' (optional)array
toKeyValueCollectionConvert all the values to a key-value format as a Collection.method = '' (optional)Collection
toKeyValueArrayConvert all the values to a key-value format as an array.method = '' (optional)array
randomValueGet a random value from the collection of values.method = '' (optional)mixed
randomCaseGet a random case (key / name) from the collection of values.Nonestring
casesCollectionGet all the cases (keys / names) of the Enum as a Collection.NoneCollection
casesArrayGet all the cases (keys / names) of the Enum as an array.Nonearray
allToArrayGet all the values as an array. (Alias for toArray method)method = '' (optional)array
onlyGet a subset of the values as a Collection, only including the specified cases (keys / names).cases,method = '' (optional)Collection
onlyAsArrayGet a subset of the values as an array, only including the specified cases (keys / names).cases, method = '' (optional)array
exceptGet a subset of the values as a Collection, excluding the specified cases (keys / names).cases, method = '' (optional)Collection
exceptAsArrayGet a subset of the values as an array, excluding the specified cases (keys / names).cases, method = '' (optional)array
firstGet the first value in the Enum.method = '' (optional)mixed
lastGet the last value in the Enum.method = '' (optional)mixed

Basic Usage

You can check the Examples with All Methods section at the bellow of the document for more details.


namespace App\Enums;

use EmreYarligan\EnumConcern\EnumConcern;

enum Color: string
{
    use EnumConcern;

    case RED = "Red";
    case GREEN = "Green";
    case BLUE = "Blue";

    public function translateToTurkish(): string
    {
        return match ($this) {
            self::RED    => 'Kฤฑrmฤฑzฤฑ',
            self::GREEN  => 'YeลŸil',
            self::BLUE   => 'Mavi',
        };
    }

}

Color::all();
// Result: Illuminate\Support\Collection (7) [
//   [0] => 'Red',
//   [1] => 'Green',
//   [2] => 'Blue
// ]

Color::all('translateToTurkish');
// Result: Illuminate\Support\Collection (7) [
//   [0] => 'Kฤฑrmฤฑzฤฑ',
//   [1] => 'YeลŸil',
//   [2] => 'Mavi
// ]

Color::has('Purple');
// false

Color::has('Mavi','translateToTurkish');
// true

Examples With All Methods

Step 1: Create Your Enum

Create an Enum class and uses the EnumConcern Trait.

Here's an example for this paper. I created a trait about fruits for the example, isn't it ingenious? ๐Ÿ˜›

namespace App\Enums;

use EmreYarligan\EnumConcern\EnumConcern;

enum Fruits: int
{
    use EnumConcern;

    case BANANA = 1;
    case STRAWBERRY = 2;
    case CHERRY = 3;
    case WATERMELON = 4;
    case ORANGE = 5;
    case KIWI = 6;
    case APPLE = 7;

    // Custom methods
    public function emojis(): string
    {
        return match ($this) {
            self::BANANA        => '๐ŸŒ',
            self::STRAWBERRY    => '๐Ÿ“',
            self::CHERRY        => '๐Ÿ’',
            self::WATERMELON    => '๐Ÿ‰',
            self::ORANGE        => '๐ŸŠ',
            self::KIWI          => '๐Ÿฅ',
            self::APPLE         => '๐ŸŽ',
        };
    }

    public function names(): string
    {
        return match ($this) {
            self::BANANA        => 'Banana',
            self::STRAWBERRY    => 'Strawberry',
            self::CHERRY        => 'Cherry',
            self::WATERMELON    => 'Watermelon',
            self::ORANGE        => 'Orange',
            self::KIWI          => 'Kiwi',
            self::APPLE         => 'Apple',
        };
    }
}

Note: This README includes examples that are valid for both int and string types of Enum values. The EnumConcern Trait handles both types of Enum values in the same way. This allows you to use the EnumConcern Trait for both types of Enum in your project and facilitate the handling of Enum values.

Here's string Enum example:

namespace App\Enums;

use EmreYarligan\EnumConcern\EnumConcern;

enum Fruits: string
{
    use EnumConcern;

    case BANANA = "Delicious Banana";
    case STRAWBERRY = 'Red Strawberry';
    case CHERRY = "Sweet Cherry";
    case WATERMELON = "juicy watermelon";
    case ORANGE = "Tasty Orange";
    case KIWI = "Green Kiwi";
    case APPLE = "Crunchy Apple";
}

Step 2: Enum Handling with EnumConcern

EnumConcern provides several convenient methods to handle your Enum values.

all() Method

Get all the Enum values as a Collection (empty $method)

Fruits::all();

Result:

Illuminate\Support\Collection {
  #items: array:7 [
    "BANANA" => 1
    "STRAWBERRY" => 2
    "CHERRY" => 3
    "WATERMELON" => 4
    "ORANGE" => 5
    "KIWI" => 6
    "APPLE" => 7
  ]
}

Get all the Enum values as a Collection using 'emojis' method


Fruits::all('emojis');

Result:

Illuminate\Support\Collection {
  #items: array:7 [
    "BANANA" => "๐ŸŒ"
    "STRAWBERRY" => "๐Ÿ“"
    "CHERRY" => "๐Ÿ’"
    "WATERMELON" => "๐Ÿ‰"
    "ORANGE" => "๐ŸŠ"
    "KIWI" => "๐Ÿฅ"
    "APPLE" => "๐ŸŽ"
  ]
}

Get all the Enum values as a Collection using 'names' method.

Fruits::all('names');

Result:

Illuminate\Support\Collection {
  #items: array:7 [
    "BANANA" => "Banana"
    "STRAWBERRY" => "Strawberry"
    "CHERRY" => "Cherry"
    "WATERMELON" => "Watermelon"
    "ORANGE" => "Orange"
    "KIWI" => "Kiwi"
    "APPLE" => "Apple"
  ]
}

has() method

Check if a specific value exists (empty $method)

Fruits::has(1);

// Result: true

Check if a specific value exists using 'emojis' method

Fruits::has('๐Ÿ‰', 'emojis');

// Result: true

Check if a specific value exists using 'names' method


Fruits::has('Coconut', 'names');

// Result: false

keyByValue() method

Get the case (key / name) for a specific value (empty $method)

Fruits::keyByValue(3);

// Result: "CHERRY"

Get the case (key / name) for a specific value using 'emojis' method

Fruits::keyByValue('๐Ÿฅ', 'emojis');

// Result: "KIWI"

Get the case (key / name) for a specific value using 'names' method

Fruits::keyByValue('Orange', 'names');

// Result: "ORANGE"

toJson() method

Convert all the values to a JSON string (empty $method)

Fruits::toJson();

// Result: "{"BANANA":1,"STRAWBERRY":2,"CHERRY":3,"WATERMELON":4,"ORANGE":5,"KIWI":6,"APPLE":7}"

Convert all the values to a JSON string using 'emojis' method

Fruits::toJson('emojis',JSON_UNESCAPED_UNICODE);

// Result: "{"BANANA":"๐ŸŒ","STRAWBERRY":"๐Ÿ“",...,"APPLE":"๐ŸŽ"}"

Convert all the values to a JSON string using 'names' method

Fruits::toJson('names');

// Result: "{"BANANA":"Banana","STRAWBERRY":"Strawberry","CHERRY":"Cherry","WATERMELON":"Watermelon","ORANGE":"Orange","KIWI":"Kiwi","APPLE":"Apple"}"

toArray() method

Convert all the values to an array (empty $method)

Fruits::toArray();

Result:

array:7 [
  "BANANA" => 1
  "STRAWBERRY" => 2
  "CHERRY" => 3
  "WATERMELON" => 4
  "ORANGE" => 5
  "KIWI" => 6
  "APPLE" => 7
]

Convert all the values to an array using 'emojis' method

Fruits::toArray('emojis');

Result:

array:7 [
  "BANANA" => "๐ŸŒ"
  "STRAWBERRY" => "๐Ÿ“"
  "CHERRY" => "๐Ÿ’"
  "WATERMELON" => "๐Ÿ‰"
  "ORANGE" => "๐ŸŠ"
  "KIWI" => "๐Ÿฅ"
  "APPLE" => "๐ŸŽ"
]

Convert all the values to an array using 'names' method

Fruits::toArray('names');

Result:

array:7 [
  "BANANA" => "Banana"
  "STRAWBERRY" => "Strawberry"
  "CHERRY" => "Cherry"
  "WATERMELON" => "Watermelon"
  "ORANGE" => "Orange"
  "KIWI" => "Kiwi"
  "APPLE" => "Apple"
]

toKeyValueCollection() method

Convert all the values to a key-value format as a Collection (empty $method)

Fruits::toKeyValueCollection();

Result:

Illuminate\Support\Collection {
  #items: array:7 [
    "BANANA" => array:2 [
      "key" => "BANANA"
      "value" => 1
    ]
    "STRAWBERRY" => array:2 [
      "key" => "STRAWBERRY"
      "value" => 2
    ]
    "CHERRY" => array:2 [
      "key" => "CHERRY"
      "value" => 3
    ]
    "WATERMELON" => array:2 [
      "key" => "WATERMELON"
      "value" => 4
    ]
    "ORANGE" => array:2 [
      "key" => "ORANGE"
      "value" => 5
    ]
    "KIWI" => array:2 [
      "key" => "KIWI"
      "value" => 6
    ]
    "APPLE" => array:2 [
      "key" => "APPLE"
      "value" => 7
    ]
  ]
}

Convert all the values to a key-value format as a Collection with keyAttributeName and valueAttributeName parameters (empty $method)

Fruits::toKeyValueCollection(keyAttributeName: 'foo', valueAttributeName: 'bar');

Result:

Illuminate\Support\Collection {
  #items: array:7 [
    "BANANA" => array:2 [
      "foo" => "BANANA"
      "bar" => 1
    ]
    "STRAWBERRY" => array:2 [
      "foo" => "STRAWBERRY"
      "bar" => 2
    ]
    "CHERRY" => array:2 [
      "foo" => "CHERRY"
      "bar" => 3
    ]
    "WATERMELON" => array:2 [
      "foo" => "WATERMELON"
      "bar" => 4
    ]
    "ORANGE" => array:2 [
      "foo" => "ORANGE"
      "bar" => 5
    ]
    "KIWI" => array:2 [
      "foo" => "KIWI"
      "bar" => 6
    ]
    "APPLE" => array:2 [
      "foo" => "APPLE"
      "bar" => 7
    ]
  ]
}

Convert all the values to a key-value format as a Collection using 'emojis' method

Fruits::toKeyValueCollection('emojis');

Result:

Illuminate\Support\Collection {
  #items: array:7 [
    "BANANA" => array:2 [
      "key" => "BANANA"
      "value" => "๐ŸŒ"
    ]
    "STRAWBERRY" => array:2 [
      "key" => "STRAWBERRY"
      "value" => "๐Ÿ“"
    ]
    "CHERRY" => array:2 [
      "key" => "CHERRY"
      "value" => "๐Ÿ’"
    ]
    "WATERMELON" => array:2 [
      "key" => "WATERMELON"
      "value" => "๐Ÿ‰"
    ]
    "ORANGE" => array:2 [
      "key" => "ORANGE"
      "value" => "๐ŸŠ"
    ]
    "KIWI" => array:2 [
      "key" => "KIWI"
      "value" => "๐Ÿฅ"
    ]
    "APPLE" => array:2 [
      "key" => "APPLE"
      "value" => "๐ŸŽ"
    ]
  ]
}

Convert all the values to a key-value format as a Collection using 'emojis' method with keyAttributeName and valueAttributeName parameters

Fruits::toKeyValueCollection('emojis','foo','bar');

Result:

Illuminate\Support\Collection {
  #items: array:7 [
    "BANANA" => array:2 [
      "foo" => "BANANA"
      "bar" => "๐ŸŒ"
    ]
    "STRAWBERRY" => array:2 [
      "foo" => "STRAWBERRY"
      "bar" => "๐Ÿ“"
    ]
    "CHERRY" => array:2 [
      "foo" => "CHERRY"
      "bar" => "๐Ÿ’"
    ]
    "WATERMELON" => array:2 [
      "foo" => "WATERMELON"
      "bar" => "๐Ÿ‰"
    ]
    "ORANGE" => array:2 [
      "foo" => "ORANGE"
      "bar" => "๐ŸŠ"
    ]
    "KIWI" => array:2 [
      "foo" => "KIWI"
      "bar" => "๐Ÿฅ"
    ]
    "APPLE" => array:2 [
      "foo" => "APPLE"
      "bar" => "๐ŸŽ"
    ]
  ]
}

Convert all the values to a key-value format as a Collection using 'names' method

Fruits::toKeyValueCollection('names');

Result:

Illuminate\Support\Collection {
  #items: array:7 [
    "BANANA" => array:2 [
      "key" => "BANANA"
      "value" => "Banana"
    ]
    "STRAWBERRY" => array:2 [
      "key" => "STRAWBERRY"
      "value" => "Strawberry"
    ]
    "CHERRY" => array:2 [
      "key" => "CHERRY"
      "value" => "Cherry"
    ]
    "WATERMELON" => array:2 [
      "key" => "WATERMELON"
      "value" => "Watermelon"
    ]
    "ORANGE" => array:2 [
      "key" => "ORANGE"
      "value" => "Orange"
    ]
    "KIWI" => array:2 [
      "key" => "KIWI"
      "value" => "Kiwi"
    ]
    "APPLE" => array:2 [
      "key" => "APPLE"
      "value" => "Apple"
    ]
  ]
}

Convert all the values to a key-value format as a Collection using 'names' method with keyAttributeName and valueAttributeName parameters.

Fruits::toKeyValueCollection('names', 'foo', 'bar');

Result:

Illuminate\Support\Collection {
  #items: array:7 [
    "BANANA" => array:2 [
      "foo" => "BANANA"
      "bar" => "Banana"
    ]
    "STRAWBERRY" => array:2 [
      "foo" => "STRAWBERRY"
      "bar" => "Strawberry"
    ]
    "CHERRY" => array:2 [
      "foo" => "CHERRY"
      "bar" => "Cherry"
    ]
    "WATERMELON" => array:2 [
      "foo" => "WATERMELON"
      "bar" => "Watermelon"
    ]
    "ORANGE" => array:2 [
      "foo" => "ORANGE"
      "bar" => "Orange"
    ]
    "KIWI" => array:2 [
      "foo" => "KIWI"
      "bar" => "Kiwi"
    ]
    "APPLE" => array:2 [
      "foo" => "APPLE"
      "bar" => "Apple"
    ]
  ]
}

toKeyValueArray() method

Convert all the values to a key-value format as an array (empty $method)

Fruits::toKeyValueArray();

Result:

array:7 [
  0 => array:2 [
    "key" => "BANANA"
    "value" => 1
  ]
  1 => array:2 [
    "key" => "STRAWBERRY"
    "value" => 2
  ]
  2 => array:2 [
    "key" => "CHERRY"
    "value" => 3
  ]
  3 => array:2 [
    "key" => "WATERMELON"
    "value" => 4
  ]
  4 => array:2 [
    "key" => "ORANGE"
    "value" => 5
  ]
  5 => array:2 [
    "key" => "KIWI"
    "value" => 6
  ]
  6 => array:2 [
    "key" => "APPLE"
    "value" => 7
  ]
]

Convert all the values to a key-value format as an array with keyAttributeName and valueAttributeName parameters (empty $method)

Fruits::toKeyValueArray(keyAttributeName: 'foo', valueAttributeName: 'bar');

Result:

array:7 [
  0 => array:2 [
    "foo" => "BANANA"
    "bar" => 1
  ]
  1 => array:2 [
    "foo" => "STRAWBERRY"
    "bar" => 2
  ]
  2 => array:2 [
    "foo" => "CHERRY"
    "bar" => 3
  ]
  3 => array:2 [
    "foo" => "WATERMELON"
    "bar" => 4
  ]
  4 => array:2 [
    "foo" => "ORANGE"
    "bar" => 5
  ]
  5 => array:2 [
    "foo" => "KIWI"
    "bar" => 6
  ]
  6 => array:2 [
    "foo" => "APPLE"
    "bar" => 7
  ]
]

Convert all the values to a key-value format as an array using 'emojis' method

Fruits::toKeyValueArray('emojis');

Result:

array:7 [
  0 => array:2 [
    "key" => "BANANA"
    "value" => "๐ŸŒ"
  ]
  1 => array:2 [
    "key" => "STRAWBERRY"
    "value" => "๐Ÿ“"
  ]
  2 => array:2 [
    "key" => "CHERRY"
    "value" => "๐Ÿ’"
  ]
  3 => array:2 [
    "key" => "WATERMELON"
    "value" => "๐Ÿ‰"
  ]
  4 => array:2 [
    "key" => "ORANGE"
    "value" => "๐ŸŠ"
  ]
  5 => array:2 [
    "key" => "KIWI"
    "value" => "๐Ÿฅ"
  ]
  6 => array:2 [
    "key" => "APPLE"
    "value" => "๐ŸŽ"
  ]
]

Convert all the values to a key-value format as an array using 'emojis' method with keyAttributeName and valueAttributeName parameters (empty $method)

Fruits::toKeyValueArray('emojis','foo','bar');

Result:

array:7 [
  0 => array:2 [
    "foo" => "BANANA"
    "bar" => "๐ŸŒ"
  ]
  1 => array:2 [
    "foo" => "STRAWBERRY"
    "bar" => "๐Ÿ“"
  ]
  2 => array:2 [
    "foo" => "CHERRY"
    "bar" => "๐Ÿ’"
  ]
  3 => array:2 [
    "foo" => "WATERMELON"
    "bar" => "๐Ÿ‰"
  ]
  4 => array:2 [
    "foo" => "ORANGE"
    "bar" => "๐ŸŠ"
  ]
  5 => array:2 [
    "foo" => "KIWI"
    "bar" => "๐Ÿฅ"
  ]
  6 => array:2 [
    "foo" => "APPLE"
    "bar" => "๐ŸŽ"
  ]
]

Convert all the values to a key-value format as an array using 'names' method

Fruits::toKeyValueArray('names');

Result:

array:7 [
  0 => array:2 [
    "key" => "BANANA"
    "value" => "Banana"
  ]
  1 => array:2 [
    "key" => "STRAWBERRY"
    "value" => "Strawberry"
  ]
  2 => array:2 [
    "key" => "CHERRY"
    "value" => "Cherry"
  ]
  3 => array:2 [
    "key" => "WATERMELON"
    "value" => "Watermelon"
  ]
  4 => array:2 [
    "key" => "ORANGE"
    "value" => "Orange"
  ]
  5 => array:2 [
    "key" => "KIWI"
    "value" => "Kiwi"
  ]
  6 => array:2 [
    "key" => "APPLE"
    "value" => "Apple"
  ]
]

Convert all the values to a key-value format as an array using 'names' method with keyAttributeName and valueAttributeName parameters (empty $method)

Fruits::toKeyValueArray('names','foo','bar');

Result:

array:7 [
  0 => array:2 [
    "foo" => "BANANA"
    "bar" => "Banana"
  ]
  1 => array:2 [
    "foo" => "STRAWBERRY"
    "bar" => "Strawberry"
  ]
  2 => array:2 [
    "foo" => "CHERRY"
    "bar" => "Cherry"
  ]
  3 => array:2 [
    "foo" => "WATERMELON"
    "bar" => "Watermelon"
  ]
  4 => array:2 [
    "foo" => "ORANGE"
    "bar" => "Orange"
  ]
  5 => array:2 [
    "foo" => "KIWI"
    "bar" => "Kiwi"
  ]
  6 => array:2 [
    "foo" => "APPLE"
    "bar" => "Apple"
  ]
]

randomValue() method

Get a random value from the collection of values (empty $method)

Fruits::randomValue();

// Result: int(4)

Get a random value from the collection of values using 'emojis' method

Fruits::randomValue('emojis');

// Result: string(4) "๐ŸŠ"

Get a random value from the collection of values using 'names' method

Fruits::randomValue('names');

// Result: string(6) "Kiwi"

randomKey() method

Get a random case (key / name) from the collection of values

Fruits::randomKey();

// Result: string(7) "KIWI"

only() Method

Get values of only certain keys as a Collection (empty $method)

Fruits::only(['STRAWBERRY','CHERRY','WATERMELON','ORANGE']);

Result:

Illuminate\Support\Collection {
  #items: array:4 [
    "STRAWBERRY" => 2
    "CHERRY" => 3
    "WATERMELON" => 4
    "ORANGE" => 5
  ]
}

Get values of only certain keys as a Collection using 'emojis' method

Fruits::only(['STRAWBERRY','CHERRY','WATERMELON','ORANGE'],'emojis');

Result:

Illuminate\Support\Collection {
  #items: array:4 [
    "STRAWBERRY" => "๐Ÿ“"
    "CHERRY" => "๐Ÿ’"
    "WATERMELON" => "๐Ÿ‰"
    "ORANGE" => "๐ŸŠ"
  ]
}

Get values of only certain keys as a Collection using 'names' method

Fruits::only(['STRAWBERRY','CHERRY','WATERMELON','ORANGE'],'names');

Result:

Illuminate\Support\Collection {
  #items: array:4 [
    "STRAWBERRY" => "Strawberry"
    "CHERRY" => "Cherry"
    "WATERMELON" => "Watermelon"
    "ORANGE" => "Orange"
  ]
}

onlyAsArray() Method

Get values of only certain keys as an array (empty $method)

Fruits::onlyAsArray(['STRAWBERRY','CHERRY','WATERMELON','ORANGE']);

Result:

array:4 [
  "STRAWBERRY" => 2
  "CHERRY" => 3
  "WATERMELON" => 4
  "ORANGE" => 5
]

Get values of only certain keys as an array using 'emojis' method

Fruits::onlyAsArray(['STRAWBERRY','CHERRY','WATERMELON','ORANGE'],'emojis');

Result:

array:4 [
  "STRAWBERRY" => "๐Ÿ“"
  "CHERRY" => "๐Ÿ’"
  "WATERMELON" => "๐Ÿ‰"
  "ORANGE" => "๐ŸŠ"
]

Get values of only certain keys as an array using 'names' method

Fruits::onlyAsArray(['STRAWBERRY','CHERRY','WATERMELON','ORANGE'],'names');

Result:

array:4 [
  "STRAWBERRY" => "Strawberry"
  "CHERRY" => "Cherry"
  "WATERMELON" => "Watermelon"
  "ORANGE" => "Orange"
]

except() Method

Get all values except certain keys as a Collection (empty $method)

Fruits::except(['STRAWBERRY','CHERRY','WATERMELON','ORANGE']);

Result:

Illuminate\Support\Collection {
  #items: array:3 [
    "BANANA" => 1
    "KIWI" => 6
    "APPLE" => 7
  ]
}

Get all values except certain keys a Collection using 'emojis' method

Fruits::except(['STRAWBERRY','CHERRY','WATERMELON','ORANGE'],'emojis');

Result:

Illuminate\Support\Collection {
  #items: array:3 [
    "BANANA" => "๐ŸŒ"
    "KIWI" => "๐Ÿฅ"
    "APPLE" => "๐ŸŽ"
  ]
}

Get all values except certain keys a Collection using 'names' method

Fruits::except(['STRAWBERRY','CHERRY','WATERMELON','ORANGE'],'names');

Result:

Illuminate\Support\Collection {
  #items: array:3 [
    "BANANA" => "Banana"
    "KIWI" => "Kiwi"
    "APPLE" => "Apple"
  ]
}

exceptAsArray() Method

Get all values except certain keys as an array (empty $method)

Fruits::exceptAsArray(['STRAWBERRY','CHERRY','WATERMELON','ORANGE'])

Result:

array:3 [
  "BANANA" => 1
  "KIWI" => 6
  "APPLE" => 7
]

Get all values except certain keys an array using 'emojis' method

Fruits::exceptAsArray(['STRAWBERRY','CHERRY','WATERMELON','ORANGE'],'emojis');

Result:

array:3 [
  "BANANA" => "๐ŸŒ"
  "KIWI" => "๐Ÿฅ"
  "APPLE" => "๐ŸŽ"
]

Get all values except certain keys an array using 'names' method

Fruits::exceptAsArray(['STRAWBERRY','CHERRY','WATERMELON','ORANGE'],'names');

Result:

array:3 [
  "BANANA" => "Banana"
  "KIWI" => "Kiwi"
  "APPLE" => "Apple"
]

first() Method

Get the first value from the Enum (empty $method)

Fruits::first();
// Result: int(1)

Get the first value from the Enum using 'emojis' method

Fruits::first('emojis');
// Result: "๐ŸŒ"

Get the first value from the Enum using 'names' method

Fruits::first('names');
// Result: "Banana"

last() Method

Get the last value from the Enum (empty $method)

Fruits::last();
// Result: 7

Get the last value from the Enum using 'emojis' method

Fruits::last('emojis');
// Result: "๐ŸŽ"

Get the last value from the Enum using 'names' method

Fruits::last('names');
// Result: "Apple"

Tests

composer test
ย