Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Enumhancer Laravel Package

henzeb/enumhancer

View on GitHub
Deep Wiki
Context7

Defaults

Defaults give you some control over the configuration of the default value.

Usage

The basic way to specify a Default is by adding a case.

enum Suit
{
    use Henzeb\Enumhancer\Concerns\Defaults;

    case Hearts;
    case Clubs;
    case Spades;
    case Diamonds;
    case Default;
}

Suit::default(); // returns Suit::Default
Suit::Default->isDefault(); // returns true
Suit::Default->isNotDefault(); // returns false
Suit::Spades->isDefault(); // returns true
Suit::Spades->isNotDefault(); // returns true

NOTE: the default method returns a null when no default is set.

When using From or Getters

Suit::from('default'); // returns Suit::Default
Suit::from('circles'); // throws ValueError
Suit::tryFrom('circles'); // returns Suit::Default

Suit::get('default'); // returns Suit::Default
Suit::get('circles'); // throws ValueError
Suit::tryGet('circles', true); // returns Suit::Default
Suit::tryGet('circles'); // returns null

The default keyword

Everywhere you use the string default, Enumhancer uses what ever default you have configured.

Configuring using constant

Defaults are primarily configured using a constant named Default.

enum Suit
{
    use Henzeb\Enumhancer\Concerns\Defaults;

    case Hearts;
    case Clubs;
    case Spades;
    case Diamonds;

    const Default = Suit::Hearts;
}

Suit::default(); // returns Suit::Hearts
Suit::Default->isDefault(); // returns true
Suit::Default->isNotDefault(); // returns false
Suit::Hearts->isDefault(); // returns true
Suit::Hearts->isNotDefault(); // returns false
Suit::Spades->isDefault(); // returns true
Suit::Spades->isNotDefault(); // returns true

When using From or Getters

Suit::from('default'); // returns Suit::Hearts
Suit::from('circles'); // throws ValueError
Suit::tryFrom('circles'); // returns Suit::Hearts

Suit::get('default'); // returns Suit::Hearts
Suit::get('circles'); // throws ValueError
Suit::tryGet('circles'); // returns Suit::Hearts

NOTE: Be aware that a constant Default always has to be an instance of the enum they are in.

Private constant

When you don't want developers to use the constant directly, you can make the constant private.

enum Suit
{
    use Henzeb\Enumhancer\Concerns\Defaults;

    case Hearts;
    case Clubs;
    case Spades;
    case Diamonds;

    private const Default = Suit::Hearts;
}

Configuring using method

Another way to set a default is by overriding the default method.

enum Suit
{
    use Henzeb\Enumhancer\Concerns\Defaults;

    case Hearts;
    case Clubs;
    case Spades;
    case Diamonds;

    public static function default(): ?self
    {
        return Suit::Spades;
    }
}

When the method returns null, no default is set.

Configuring defaults

see ConfigureDefaults

Precedence

The order of precedence is as follows:

  • Overridden default method
  • ConfigureDefaults
  • mapped values using Mappers
  • one of const or case in order of appearance (uppercase or lowercase)
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver