Skip to content

docs: add examples #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 31, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 71 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

Collection of utilities for working with enums.

[Contributing](#contributing) | [Feedback](#feedback) | [License](#license) | [About Code for Romania](#about-code-for-romania)
[Contributing](#contributing) | [Install](#install) | [Usage](#usage) | [Feedback](#feedback) | [License](#license) | [About Code for Romania](#about-code-for-romania)

## Contributing

Expand All @@ -16,6 +16,76 @@ Help us out by testing this project in the [staging environment][link-staging].

If you would like to suggest new functionality, open an Issue and mark it as a __[Feature request]__. Please be specific about why you think this functionality will be of use. If you can, please include some visual description of what you would like the UI to look like, if you are suggesting new UI elements.

## Install

```console
composer require commitglobal/enum-utils
```

## Usage

### Arrayable

> [!important]
> For `Arrayable::options()`, your enum must implement a `getLabel()` method.

| Method | Description |
| ----------- | ------------------------------------------------------ |
| `names()` | Returns an array of enum case names. |
| `values()` | Returns an array of enum case values. |
| `options()` | Returns an associative array mapping values to labels. |

```php
enum Status: string
{
use CommitGlobal\Enums\Concerns\Arrayable;

case ACTIVE = 'active';
case INACTIVE = 'inactive';

public function getLabel(): string
{
return match($this) {
self::ACTIVE => 'Account is active',
self::INACTIVE => 'Account is inactive',
};
}
}
```

```php
Status::names(); // ['ACTIVE', 'INACTIVE']
Status::values(); // ['active', 'inactive']
Status::options(); // ['active' => 'Account is active', 'inactive' => 'Account is inactive']
```

### Comparable

| Method | Description |
| -------------- | ----------------------------------------------------------------- |
| `is($enum)` | Check if this enum matches the given enum instance or value. |
| `isNot($enum)` | Check if this enum does't match the given enum instance or value. |

#### Example
```php
enum Status: string
{
use CommitGlobal\Enums\Concerns\Comparable;

case ACTIVE = 'active';
case INACTIVE = 'inactive';
}
```

```php
$status = Status::ACTIVE;

$status->is(Status::ACTIVE); // true
$status->is('active'); // true
$status->is(Status::INACTIVE); // false
$status->isNot('inactive'); // true
```

## Feedback

* Request a new feature on GitHub.
Expand Down