PHPackages                             try-again-later/multi-backed-enum - 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. try-again-later/multi-backed-enum

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

try-again-later/multi-backed-enum
=================================

A small PHP library for creating enums with cases backed by multiple values.

v0.1.0(3y ago)050MITPHPPHP &gt;=8.1.0CI passing

Since Jun 27Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/try-again-later/Multi-Backed-Enum)[ Packagist](https://packagist.org/packages/try-again-later/multi-backed-enum)[ RSS](/packages/try-again-later-multi-backed-enum/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

Multi-backed enum
=================

[](#multi-backed-enum)

 [ ![Tests](https://github.com/try-again-later/multibackedenum/actions/workflows/test.yml/badge.svg) ](https://github.com/try-again-later/MultiBackedEnum/actions/workflows/test.yml) [ ![Latest Version](https://camo.githubusercontent.com/4b25ca543431e43970c5088b97eb4f9e1ca51a11d7930cd33e3d3fa23e6862d2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7472792d616761696e2d6c617465722f6d756c74692d6261636b65642d656e756d) ](https://packagist.org/packages/try-again-later/multi-backed-enum) [ ![Latest Version](https://camo.githubusercontent.com/aceeb86ca90afe8dbfe066a03df53efd231b8aafbf3739d6f911362ac54cd9e4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f7472792d616761696e2d6c617465722f6d756c74692d6261636b65642d656e756d) ](https://packagist.org/packages/try-again-later/multi-backed-enum)

Небольшая библиотека для PHP 8.1+, позволяющая создавать перечисления, вариантам которых может соответствовать сразу несколько скалярных значений (целых чисел или строк). Скалярные значения указываются с помощью атрибутов на вариантах перечисления, а новые методы добавляются через трейты.

Библиотека позволяет конвертировать скалярные значения в варианты перечисления и обратно.

По сути это как "backed" перечисления из PHP 8.1, но с возможностью указать несколько значений для одного варианта. Интерфейс повторяет методы "backed" перечислений из PHP 8.1, но также включает метод `allValues()`, позволяющий получить весь список скалярных значений назначенных для конкретного варианта перечисления.

---

A small PHP 8.1+ library for creating enumerations with cases backed by multiple values. Useful when you have a bunch of "backing" values (strings or integers) all of which identify the same enumeration case. Backing values are specified using attributes applied to the enumeration cases and the new methods are added via traits.

The library allows you to convert backing values into enumeration cases and vice versa.

The interface mimics PHP 8.1.0 backed enums with an addition of method `allValues()`, which returns a list of all "backing" values.

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

[](#installation)

Via composer:

```
$ composer require try-again-later/multi-backed-enum
```

Example
-------

[](#example)

```
use TryAgainLater\MultiBackedEnum\{MultiBackedEnum, Values, MakeMultiBacked};

#[MultiBackedEnum]
enum Status
{
  #[Values('on', 'true', 'yes')]
  case ON;

  #[Values('off', 'false', 'no', 'null')]
  case OFF;

  use MakeMultiBacked;
}

// Status::ON
$status = Status::tryFrom('true');

// Throws a ValueError
$status = Status::from('some bad value');

// Returns the first one from the list.
// 'off'
$stringStatus = Status::OFF->value();

// ['on', 'true', 'yes']
$stringStatuses = Status::ON->allValues();
```

Running tests and linter (on the library iteself)
-------------------------------------------------

[](#running-tests-and-linter-on-the-library-iteself)

```
composer test
composer lint
```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance39

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

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

Unknown

Total

1

Last Release

1412d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/01ab757ee6f25445f1482847040318b048993b5d1d3a0d109a37440360f5c6ed?d=identicon)[try-again-later](/maintainers/try-again-later)

---

Top Contributors

[![try-again-later](https://avatars.githubusercontent.com/u/102386816?v=4)](https://github.com/try-again-later "try-again-later (13 commits)")

---

Tags

enumphp

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/try-again-later-multi-backed-enum/health.svg)

```
[![Health](https://phpackages.com/badges/try-again-later-multi-backed-enum/health.svg)](https://phpackages.com/packages/try-again-later-multi-backed-enum)
```

PHPackages © 2026

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