PHPackages                             damianulan/php-enumerable - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. damianulan/php-enumerable

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

damianulan/php-enumerable
=========================

Extensive enum class support for plain PHP and Laravel projects

1.0.0(5mo ago)0141MITPHPPHP ^8.0

Since Nov 30Pushed 5mo agoCompare

[ Source](https://github.com/damianulan/php-enumerable)[ Packagist](https://packagist.org/packages/damianulan/php-enumerable)[ RSS](/packages/damianulan-php-enumerable/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (3)Used By (1)

PHP Enumerable
==============

[](#php-enumerable)

[![Static Badge](https://camo.githubusercontent.com/afca9778e22c472c6b601fe4bac81424fb1b47a876c1742009544a6bce5c2e38/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d6164655f776974682d4c61726176656c2d7265643f7374796c653d666f722d7468652d6261646765)](https://laravel.com/docs/11.x/releases) [![Licence](https://camo.githubusercontent.com/0c2e91939275c9fd009f7680dc38d0763918d859f61af587b5271311f234efcf/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f496c65726961796f2f6d61726b646f776e2d6261646765733f7374796c653d666f722d7468652d6261646765)](./LICENSE) [![Static Badge](https://camo.githubusercontent.com/1c44eb0e6c2006f3c5e16a51c67b79b9aae86a926bf1103e458160e8249d50c9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65722d64616d69616e756c616e2d626c75653f7374796c653d666f722d7468652d6261646765)](https://damianulan.me)

Description
-----------

[](#description)

This package provides extensive enumeration support for PHP and Laravel projects, as a substitute for PHP built-in enums.

Installation
------------

[](#installation)

You can install the package via composer in your laravel project:

```
composer require damianulan/php-enumerable

```

The package will automatically register itself.

Usage
-----

[](#usage)

Use `Enumerable\Enum` class to create enumeration in plain php, in laravel project use `Enumerable\Laravel\Enum` class, which provides additional casting support. Class `Enumerable\Enum` instances mimic implementation of [BackedEnum](https://www.php.net/manual/en/class.backedenum.php) and [UnitEnum](https://www.php.net/manual/en/class.unitenum.php).

```
use Enumerable\Enum;

class CampaignStage extends Enum
{
    public const PENDING = 'pending';

    public const IN_PROGRESS = 'in_progress';

    public const COMPLETED = 'completed';
}
```

Check the examples below:

```
StageEnum::cases(); // returns an assoc array of all enum cases with enum instance
StageEnum::values(); // returns an array of all enum values
StageEnum::labels(); // should return an assoc array of all enum cases with human-readable label. This method should be declared in Enum child class. Accessible by attribue `label`.
// ['enum_value' => 'Human-readable label']

$stage = StageEnum::fromValue('pending'); // returns enum instance
$stage->label; // returns human-readable label if labels() method is declared in child class
$stage->value; // returns enum value

StageEnum::Pending; // returns enum value, not its instance
```

In Laravel assign your `Enumerable\Laravel\Enum` to yout model's `casts` property:

```
protected $casts = array(
    'stage' => StageEnum::class,
);
```

It will return `StageEnum` instance instead of string when accessing model's `stage` property.

More examples
-------------

[](#more-examples)

```
$stage->is('pending'); // returns true if enum value is equal to given string
$stage->isNot('pending'); // returns true if enum value is not equal to given string
$stage->equals($otherEnum); // returns true if enum value is equal to given enum instance
```

Contact &amp; Contributing
--------------------------

[](#contact--contributing)

Any question You can submit to ****.

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance71

Regular maintenance activity

Popularity8

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

169d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/8edae7c1a9d4cc850ce273f54ba3ac7ee43cd145aebab25b23247be9309a5ab1?d=identicon)[damianulan](/maintainers/damianulan)

---

Top Contributors

[![damianulan](https://avatars.githubusercontent.com/u/31820473?v=4)](https://github.com/damianulan "damianulan (7 commits)")

---

Tags

phplaravelenumenumerations

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/damianulan-php-enumerable/health.svg)

```
[![Health](https://phpackages.com/badges/damianulan-php-enumerable/health.svg)](https://phpackages.com/packages/damianulan-php-enumerable)
```

###  Alternatives

[lazerg/laravel-enum-pro

A powerful PHP enum extension with collection support, random selection, and magic static calls

4319.0k](/packages/lazerg-laravel-enum-pro)[mindtwo/native-enum

Package for using native php enums.

2626.0k1](/packages/mindtwo-native-enum)[iteks/laravel-enum

A comprehensive Laravel package providing enhanced enum functionalities, including attribute handling, select array conversions, and fluent facade interactions for robust enum management in Laravel applications.

2516.7k](/packages/iteks-laravel-enum)[amranidev/laracombee

Recommendation system for laravel

11636.7k1](/packages/amranidev-laracombee)[wujunze/money-wrapper

MoneyPHP Wrapper

113.8k](/packages/wujunze-money-wrapper)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
