GithubHelp home page GithubHelp logo

laravel-easy-enum's Introduction

๐Ÿ”ฅ Easy enum

Workflow status Laravel v11.x PHP 8.2

Easily work with enums.

โœจ Help support the maintenance of this package by sponsoring me.

Designed to work with Laravel, Filament, and more.

Preview

Table of Contents

๐Ÿ“ฆ Install

composer require sakanjo/laravel-easy-enum

๐Ÿฆ„ Usage

1. Create enum

<?php

namespace App\Enums;

use SaKanjo\EasyEnum;

enum ExampleEnum: int
{
    use EasyEnum;

    case Active = 0;
    case NOPE = 1;
}

2. Create lang file

// lang/en/enums.php

<?php

use App\Enums;

return [
    Enums\ExampleEnum::class => [
        Enums\ExampleEnum::NOPE->name => 'Nope',
        // ...
    ],
    
    // ...
];

That's it!

๐Ÿ“š Methods

getLabel

Returns the label of the enum value.

Status::Active->getLabel(); // Active

translated

Returns the translated label of the enum value.

Status::Active->translated('tr'); // Aktif

is

Checks if the enum is equal to another one.

$enum1->is($enum2); // boolean

isNot

inverse of is.

$enum1->isNot($enum2); // boolean

in

Checks if the enum is in a list of enums.

$enum->in([$enum1, $enum2]); // boolean

notIn

inverse of in.

$enum->notIn([$enum1, $enum2]); // boolean

tryFromName

Safely converts a string to its corresponding enum value (returns null if not found).

Status::tryFromName('Active'); // Status::Active
Status::tryFromName('Oops'); // null

Converts a string to its corresponding enum value (throws exception if not found).

fromName

Status::fromName('Active'); // Status::Active
Status::fromName('Oops'); // Throws ValueError exception

names

Returns a list of case names.

Status::names(); // ['Active', 'NOPE']

values

Returns a list of case values .

Status::values(); // [0, 1]

options

Returns an associative array of case names and values.

Status::options(); // ['Active' => 0, 'NOPE' => 1]
Status::options(true); // ['Active' => 0, 'Nope' => 1]

toHtml

alias for getLabel, useful in blade.

Status::Active->toHtml(); // Active

resolveDisplayableValue

same as toHtml except it doesn't render HTML.

Status::Active->resolveDisplayableValue(); // Active

๐Ÿ”ฅ Practical examples

Filamentphp

Enum
<?php

namespace App\Enums;

use Filament\Support\Contracts\HasLabel;
use SaKanjo\EasyEnum;

enum Status: int implements HasLabel
{
    use EasyEnum;

    case Active = 0;
    case Disabled = 1;
}
Resource
<?php

use Filament\Forms;
use App\Enums;

Forms\Components\Select::make('status')
    ->options(Enums\Status::class);

Laravel blade

<?php

namespace App\Enums;

use Illuminate\Contracts\Support\DeferringDisplayableValue;
use Illuminate\Contracts\Support\Htmlable;
use SaKanjo\EasyEnum;

enum Status: int implements Htmlable // or DeferringDisplayableValue
{
    use EasyEnum;

    case Active = 0;
    case Disabled = 1;
}
<div>
    Current status: {{ auth()->user()->status }}
</div>

๐Ÿ’– Support the development

Do you like this project? Support it by donating

Click the "๐Ÿ’– Sponsor" at the top of this repo.

ยฉ๏ธ Credits

๐Ÿ“„ License

MIT License ยฉ 2023-PRESENT Salah Kanjo

laravel-easy-enum's People

Contributors

sakanjo avatar

Stargazers

Haykel Rekik avatar  avatar Abdelhamid Errahmouni avatar Iliyas M avatar Ricardo Sawir avatar Tally Schmeits avatar Pv Ledoux avatar Aleks avatar Hassan Kerdash avatar Stef Rouschop avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.