desmart/laravel-enum

PHP 枚举用于 Laravel 模型

1.1.0 2021-03-17 09:43 UTC

This package is auto-updated.

Last update: 2024-09-17 17:05:41 UTC


README

Latest version Tests Software License

该包提供了一种简单的方法来使用强类型枚举对象与 Laravel 模型一起使用。它利用了 Laravel 的自定义转换机制。

安装

要通过 Composer 安装此包,请运行以下命令

composer require desmart/laravel-enum

用法

创建一个继承自 DeSmart\Laravel\Enumeration 的枚举类。然后,简单地以类常量的形式定义所有可能值

class Character extends DeSmart\Laravel\Enumeration
{
    const GOOD = 'good';
    const EVIL = 'evil';
    const SOMETIMES_GOOD_SOMETIMES_EVIL = 'sometimes_good_sometimes_evil';
}

在 Laravel 模型中

class Hero extends Model
{
    /**
     * @var array
     */
    protected $casts = [
        'character' => Character::class,
    ];
}

就是这样。

$hero = new Hero(['character' => Character::EVIL]);

dump($hero);
// Hero {#293
//  ...
//  #casts: array:1 [
//    "character" => "Character"
//  ]
// ...
//  #attributes: array:1 [
//    "character" => "evil"
//  ]
// }

dump($hero->character);
// Character {#296
//  -value: "evil"
// }

枚举类生成

该包提供了 make:enum Artisan 命令来自动生成枚举类。要生成新的枚举类,请运行

php artisan make:enum Character --cases='good,evil,sometimes_good_sometimes_evil'

--cases(或 -c)选项允许定义可用的枚举情况。可以在不指定该选项的情况下运行此命令。

上述命令将在 Enums 目录中创建一个新的类

namespace App\Enums;

use DeSmart\Laravel\Enumeration\Enumeration;

/**
 * @method static Character good()
 * @method static Character evil()
 * @method static Character sometimesGoodSometimesEvil()
 */
class Character extends Enumeration
{
	const GOOD = 'good';
	const EVIL = 'evil';
	const SOMETIMES_GOOD_SOMETIMES_EVIL = 'sometimes_good_sometimes_evil';
}

更新日志

有关最近更改的更多信息,请参阅 更新日志

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件