dasprid/enum
dasprid/enum brings type-safe, object-based enums to PHP. Define a fixed set of values with labels, comparisons, serialization and validation, reducing magic strings/ints and improving readability in domain models and configuration.
Install via Composer: composer require dasprid/enum. Define an enum by extending DASPRiD\Enum\Enum and declare cases via PHPDoc @method annotations for IDE/static analysis support:
use DASPRiD\Enum\Enum;
/**
* @method static self DRAFT()
* @method static self PUBLISHED()
* @method static self ARCHIVED()
*/
class PostStatus extends Enum {}
Then use it immediately in domain logic: PostStatus::PUBLISHED(), type-hint against the enum, and validate with from().
function update(PostStatus $status)) to guarantee only valid values enter business logic.from() for user input ($status = PostStatus::from($request->input('status'))) or database values—throws InvalidArgumentException on mismatch.PostStatus::values() for dropdowns or API responses, or use self::getKnownValues() for validation.OrderStatus::from($dbStatus)) to enforce bounded context boundaries and reduce primitive obsession. casts: ['status' => PostStatus::class] if extended), or handle conversion manually—this package alone does not provide native ORM integration.@method annotations and IDEs/static analyzers (PHPStan, Psalm) won’t recognize enum cases—use @extends Enum<PostStatus> for strict typing.=== (e.g., $status === PostStatus::PUBLISHED()), never ==; from() ensures singleton instances.__sleep()/__wakeup() or use JsonSerializable to serialize as scalar values.composer.json before adoption.How can I help you explore Laravel packages today?