cerbero / laravel-enum
Laravel 枚举生成器。
Requires
- php: ^7.1|^8.0
- illuminate/console: >=5.6
- illuminate/support: >=5.6
- rexlabs/enum: ^2.0
Requires (Dev)
- orchestra/testbench: >=3.6
- phpunit/phpunit: >=7.0
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-10 13:04:52 UTC
README
Laravel 包,引入一个新的 Artisan 命令来生成 Enum 类。
它提供了一个简单的语法来指定并映射 Enum 类中的常量,同时添加 PHPDoc 标签,使 IDE 能够识别哪些常量可以作为方法来实例化 Enum 类。
安装
通过 Composer
$ composer require cerbero/laravel-enum
用法
可以通过调用 Artisan 命令 make:enum
并指定类和常量名称来生成枚举。可以通过管道(请注意引号的使用)一次定义多个枚举。
$ php artisan make:enum Status 'IN_PROGRESS|COMPLETE|FAILED'
在上一个示例中未定义任何键,在这种情况下,键假定等于其小写常量名称。这就是 Status
枚举的外观。
<?php namespace App\Enums; use Rexlabs\Enum\Enum; /** * The Status enum. * * @method static self IN_PROGRESS() * @method static self COMPLETE() * @method static self FAILED() */ class Status extends Enum { const IN_PROGRESS = 'in_progress'; const COMPLETE = 'complete'; const FAILED = 'failed'; }
尽管如此,您可能需要定义自己的键,可以通过使用 =
字符配对常量名称和键来实现。
$ php artisan make:enum Status 'IN_PROGRESS=1|COMPLETE=2|FAILED=3'
上述命令将生成以下 Status
枚举
<?php namespace App\Enums; use Rexlabs\Enum\Enum; /** * The Status enum. * * @method static self IN_PROGRESS() * @method static self COMPLETE() * @method static self FAILED() */ class Status extends Enum { const IN_PROGRESS = 1; const COMPLETE = 2; const FAILED = 3; }
同样,您可以通过使用 =
字符配对键和值来指定枚举值
$ php artisan make:enum Status 'IN_PROGRESS=1=In progress|COMPLETE=2=Complete|FAILED=3=Failed'
上述命令将生成以下 Status
枚举并实现 map()
方法
<?php namespace App\Enums; use Rexlabs\Enum\Enum; /** * The Status enum. * * @method static self IN_PROGRESS() * @method static self COMPLETE() * @method static self FAILED() */ class Status extends Enum { const IN_PROGRESS = 1; const COMPLETE = 2; const FAILED = 3; /** * Retrieve a map of enum keys and values. * * @return array */ public static function map() : array { return [ static::IN_PROGRESS => 'In progress', static::COMPLETE => 'Complete', static::FAILED => 'Failed', ]; } }
有时您可能需要在键或值中定义值数组,您可以通过提供 JSON 字符串来完成此操作
$ php artisan make:enum Status 'NAMES={"in_progress":"In progress","complete":"Complete"}'
此包将为您构建、缩进和格式化数组
<?php namespace App\Enums; use Rexlabs\Enum\Enum; /** * The Status enum. * * @method static self NAMES() */ class Status extends Enum { const NAMES = [ 'in_progress' => 'In progress', 'complete' => 'Complete', ]; }
您还可以使用 --keys
选项生成不需要定义的键
--keys=bitwise
生成位运算键(1, 2, 4, 8...)--keys=int0
生成 0 索引整数键(1, 2, 3, 4...)--keys=int1
生成 1 索引整数键(0, 1, 2, 3...)--keys=lower
通过将常量名称转换为小写生成键
以下配对命令生成相同的 Enum 类
$ php artisan make:enum Status 'IN_PROGRESS=1|COMPLETE=2|FAILED=4' $ php artisan make:enum Status 'IN_PROGRESS|COMPLETE|FAILED' --keys=bitwise $ php artisan make:enum Status 'IN_PROGRESS=0|COMPLETE=1|FAILED=2' $ php artisan make:enum Status 'IN_PROGRESS|COMPLETE|FAILED' --keys=int0 $ php artisan make:enum Status 'IN_PROGRESS=1|COMPLETE=2|FAILED=3' $ php artisan make:enum Status 'IN_PROGRESS|COMPLETE|FAILED' --keys=int1 $ php artisan make:enum Status 'IN_PROGRESS=in_progress|COMPLETE=complete|FAILED=failed' $ php artisan make:enum Status 'IN_PROGRESS|COMPLETE|FAILED' --keys=lower
当提供 --keys
时,您可以通过使用 =
字符配对名称和值来定义枚举值
$ php artisan make:enum JSON 'HEX_TAG=Hex Tag|HEX_AMP=Hex Amp|HEX_APOS=Hex Apos|HEX_QUOT=Hex Quot' --keys=bitwise
上述命令将生成以下 JSON
枚举
<?php namespace App\Enums; use Rexlabs\Enum\Enum; /** * The JSON enum. * * @method static self HEX_TAG() * @method static self HEX_AMP() * @method static self HEX_APOS() * @method static self HEX_QUOT() */ class JSON extends Enum { const HEX_TAG = 1; const HEX_AMP = 2; const HEX_APOS = 4; const HEX_QUOT = 8; /** * Retrieve a map of enum keys and values. * * @return array */ public static function map() : array { return [ static::HEX_TAG => 'Hex Tag', static::HEX_AMP => 'Hex Amp', static::HEX_APOS => 'Hex Apos', static::HEX_QUOT => 'Hex Quot', ]; } }
默认情况下,枚举生成在 app/Enums
目录中。如果您希望使用不同的位置,可以设置选项 --path
(或快捷键 -p
)
$ php artisan make:enum Status 'IN_PROGRESS|COMPLETE|FAILED' --path=Other/Directory
上述命令将在 app/Other/Directory
中生成 Status
类。
如果您尝试生成已经存在的枚举,除非您设置了选项 --force
(或快捷键 -f
),否则现有的枚举不会被覆盖
$ php artisan make:enum Status 'IN_PROGRESS|COMPLETE|FAILED' --force
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
测试
$ composer test
贡献
请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT 了解详细信息。
安全性
如果您发现任何安全问题,请通过电子邮件 andrea.marco.sartori@gmail.com 而不是使用问题跟踪器
致谢
许可证
麻省理工学院许可协议(MIT)。有关更多信息,请参阅许可文件。