定制 emreyarligan/enum-concern 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

emreyarligan/enum-concern

Composer 安装命令:

composer require emreyarligan/enum-concern

包简介

A PHP package for effortless Enumeration handling with Laravel Collections 📦 ✨

README 文档

README

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. 🧡

Latest Version Total Downloads

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

Method Description Parameters Return Type
all Get all the values as a Collection. method = '' (optional) Collection
allAsArray Get all the values as an array. method = '' (optional) array
has Check if a specific value exists. value, method = '' (optional) bool
caseExists Check if a specific case (key / name) exists. value, method = '' (optional) bool
allCasesExists Check if all the given cases (keys / names) exist. cases, method = '' (optional) bool
anyCaseExists Check if any of the given cases (keys / names) exist. cases, method = '' (optional) bool
caseByValue Get the case (key / name) for a specific value. value, method = '' (optional) string
toJson Convert all the values to a JSON string. method = '' (optional),jsonEncodeOption (optional) string
toArray Convert all the values to an array. method = '' (optional) array
toKeyValueCollection Convert all the values to a key-value format as a Collection. method = '' (optional) Collection
toKeyValueArray Convert all the values to a key-value format as an array. method = '' (optional) array
randomValue Get a random value from the collection of values. method = '' (optional) mixed
randomCase Get a random case (key / name) from the collection of values. None string
casesCollection Get all the cases (keys / names) of the Enum as a Collection. None Collection
casesArray Get all the cases (keys / names) of the Enum as an array. None array
allToArray Get all the values as an array. (Alias for toArray method) method = '' (optional) array
only Get a subset of the values as a Collection, only including the specified cases (keys / names). cases,method = '' (optional) Collection
onlyAsArray Get a subset of the values as an array, only including the specified cases (keys / names). cases, method = '' (optional) array
except Get a subset of the values as a Collection, excluding the specified cases (keys / names). cases, method = '' (optional) Collection
exceptAsArray Get a subset of the values as an array, excluding the specified cases (keys / names). cases, method = '' (optional) array
first Get the first value in the Enum. method = '' (optional) mixed
last Get the last value in the Enum. method = '' (optional) mixed
fromValue Create an Enum object from a string value. value object
valueNamePairs Get the key-value pairs of value and transformed value (if a method is specified). method = '' (optional) Collection
is Check if the Enum object is equal to the given object. object bool
isNot Check if the Enum object is not equal to the given object. object bool
isAny Check if the Enum object is equal to any of the given objects. objects bool
isNotAny Check if the Enum object is not equal to any of the given objects. objects bool

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"

fromValue() Method

Create an Enum object from a string value.

$greenEnum = Color::fromValue("Green");
// Result:
// App\Enums\Color {
//   +name: "GREEN"
//   +value: "Green"
// }

If the value "Green" exists in the Color Enum, this method will return the corresponding Enum object. If not, it will throw an InvalidArgumentException.

valueNamePairs() Method

Get the key-value pairs of value and transformed value (if a method is specified).

$pairs = Color::valueNamePairs('translateToTurkish');
// Result:
// Illuminate\Support\Collection {
//    "Red" => "Kırmızı",
//    "Green" => "Yeşil",
//    "Blue" => "Mavi"
// }

is() Method

Checks if the Enum value is equal to the given value.

  $enum = Fruits::BANANA;

  $enum->is(Fruits::BANANA);
  // Result: true

  $enum->is(Fruits::APPLE);
  // Result: false

isNot() Method

Checks if the Enum value is not equal to the given value.

  $enum = Fruits::BANANA;

  $enum->isNot(Fruits::BANANA);
  // Result: false

  $enum->isNot(Fruits::APPLE);
  // Result: true

isAny() Method

Checks if the Enum value is equal to any of the given values.

  $enum = Fruits::BANANA;

  $enum->isAny(Fruits::BANANA, Fruits::APPLE);
  // Result: true

  $enum->isAny(Fruits::APPLE, Fruits::KIWI);
  // Result: false

isNotAny() Method

Checks if the Enum value is not equal to any of the given values.

  $enum = Fruits::BANANA;

  $enum->isNotAny(Fruits::BANANA, Fruits::APPLE);
  // Result: false

  $enum->isNotAny(Fruits::APPLE, Fruits::KIWI);
  // Result: true

Tests

composer test

emreyarligan/enum-concern 适用场景与选型建议

emreyarligan/enum-concern 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 61.31k 次下载、GitHub Stars 达 211, 最近一次更新时间为 2023 年 08 月 20 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「enum」 「enumeration」 「laravel」 「concern」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 emreyarligan/enum-concern 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 emreyarligan/enum-concern 我们能提供哪些服务?
定制开发 / 二次开发

基于 emreyarligan/enum-concern 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 61.31k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 211
  • 点击次数: 13
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 211
  • Watchers: 2
  • Forks: 8
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-08-20