Weave 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

Enums Laravel Package

prinsfrank/enums

View on GitHub
Deep Wiki
Context7

Enums

GitHub PHP Version Support codecov PHPStan Level

Adds missing strictly typed methods to work with enums

Setup

Note Make sure you are running PHP 8.1 or higher to use this package

To start right away, run the following command in your composer project;

composer require prinsfrank/enums

Or for development only;

composer require prinsfrank/enums --dev

How this package works

UnitEnum

Let's assume we have the following UnitEnum:

enum Example {
    case Foo;

    #[HasSpecialMeaning]
    case Bar;
}

If we want to get a value by it's name from a string, we can call fromName or tryFromName;

UnitEnum::fromName(Example::class, 'Foo'); // Example::Foo
UnitEnum::tryFromName(Example::class, 'Foo'); // Example::Foo

The difference between the two methods is the way non-existing names are handled;


UnitEnum::fromName(Example::class, 'Example'); // @throws NameNotFoundException
UnitEnum::tryFromName(Example::class, 'Example'); // null

Another method that this package provides is to get an array of all the names for an enum;

UnitEnum::names(Example::class); // ['Foo', 'Bar']

And finally some methods to easily get the attributes of an enum case:

UnitEnum::hasCaseAttributes(Example::Bar, HasSpecialMeaning); // true
UnitEnum::getCaseAttributes(Example::Bar); // [new HasSpecialMeaning()]

BackedEnum

Let's assume we have the following BackedEnum: (It doesn't matter if an enum is backed by a string or an integer)

enum Example: string {
    case Foo = 'Foo';

    #[HasSpecialMeaning]
    case Bar = 'Bar';
}

If we want to get a value by it's name from a string, we can call fromName or tryFromName;

BackedEnum::fromName(Example::class, 'Foo'); // Example::Foo
BackedEnum::tryFromName(Example::class, 'Foo'); // Example::Foo

The difference between the two methods is the way non-existing names are handled;


BackedEnum::fromName(Example::class, 'Example'); // @throws NameNotFoundException
BackedEnum::tryFromName(Example::class, 'Example'); // null

Another method that this package provides is to get an array of all the names for an enum;

BackedEnum::names(Example::class); // ['Foo', 'Bar']

And finally some methods to easily get the attributes of an enum case:

BackedEnum::hasCaseAttributes(Example::Bar, HasSpecialMeaning); // true
BackedEnum::getCaseAttributes(Example::Bar); // [new HasSpecialMeaning()]
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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings