desmart/ laravel-enum
PHP 枚举用于 Laravel 模型
1.1.0
2021-03-17 09:43 UTC
Requires
- php: ^7.4|^8.0
- desmart/php-enum: ^1.0
- illuminate/contracts: ^8.12
- illuminate/database: ^8.12
- illuminate/support: ^8.12
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.3.3
This package is auto-updated.
Last update: 2024-09-17 17:05:41 UTC
README
该包提供了一种简单的方法来使用强类型枚举对象与 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)。有关更多信息,请参阅 许可文件