Skip to content

A simple and easy-to-use enumeration extension package to help you manage enumerations in your project more conveniently, supporting Laravel and Lumen. 更方便地在项目中定义并使用枚举。

Notifications You must be signed in to change notification settings

jiannei/laravel-enum

Folders and files

NameName
Last commit message
Last commit date
Dec 17, 2024
Nov 15, 2024
Nov 15, 2024
Nov 29, 2020
Nov 29, 2020
Nov 30, 2020
Nov 29, 2020
Nov 15, 2024
Nov 15, 2024
Nov 29, 2020
Nov 29, 2020

Repository files navigation

laravel-enum

A simple and easy-to-use enumeration extension package to help you manage enumerations in your project more conveniently, supporting Laravel and Lumen.

  • 一个简单好用的枚举扩展包,帮助你更方便地管理项目中的枚举,支持 Laravel 和 Lumen。

Test StyleCI Latest Stable Version Total Downloads Monthly Downloads License

介绍

laravel-enum 主要用来扩展项目中的枚举使用,通过合理的定义枚举可以使代码更加规范,更易阅读和维护。

php8.1 版本后内置枚举支持,更多信息可以查看:https://www.php.net/manual/zh/language.enumerations.php

参与社区讨论:- 教你更优雅地写 API 之「枚举使用」

概览

  • 扩展原生的 BackedEnum,支持多语言描述
  • 提供更多种实用的方式来实例化枚举、枚举 name、value 取值
  • 提供了便捷的比较方法isisNotin,用于枚举实例之间的对比

安装

支持 Laravel 10 以上版本:

$ composer require jiannei/laravel-enum -vvv

使用

更为具体的使用可以查看测试用例:https://github.com/Jiannei/laravel-enum/tree/main/tests

常规使用

  • 定义
<?php

namespace Jiannei\Enum\Laravel\Tests\Enums;

use Jiannei\Enum\Laravel\Support\Traits\EnumEnhance;

enum UserType: int
{
    use EnumEnhance;

    case ADMINISTRATOR = 0;
    case MODERATOR = 1;
    case SUBSCRIBER = 2;
}
  • 使用
// 获取枚举的值
UserType::ADMINISTRATOR->value;// 0

// 获取所有已定义枚举的名称
$names = UserType::names();// ['ADMINISTRATOR', 'MODERATOR', 'SUBSCRIBER']

// 获取所有已定义枚举的值
$values = UserType::values();// [0, 1, 2]
  • 枚举校验
// 检查定义的枚举中是否包含某个「枚举值」
UserType::hasValue(1);// true
UserType::hasValue(-1);// false

// 检查定义的枚举中是否包含某个「枚举名称」 

UserType::hasName('MODERATOR');// true
UserType::hasName('ADMIN');// false
  • 枚举实例化:枚举实例化以后可以方便地通过对象实例访问枚举的 key、value 以及 description 属性的值。
UserType::fromValue(0) // 通过 value 实例化

UserType::fromName('ADMINISTRATOR') // 通过 name 实例化

UserType::guess(2) // 通过 name/value 猜测
  • toArray
$array = UserType::toArray();
  • toSelectArray
$array = UserType::toSelectArray();// 支持多语言配置

/*
[
    0 => '管理员',
    1 => '监督员',
    2 => '订阅用户',
]
*/

枚举转换和校验

Model 中的枚举转换

License

MIT

About

A simple and easy-to-use enumeration extension package to help you manage enumerations in your project more conveniently, supporting Laravel and Lumen. 更方便地在项目中定义并使用枚举。

Topics

Resources

Stars

Watchers

Forks

Languages