FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

docs: add examples by andreiio · Pull Request #2 · commitglobal/php-enum-utils · GitHub

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .md  (1) All 1 file type selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
72 changes: 71 additions & 1 deletion README.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
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

Back | FazBrowse Home | New Git URL