sypspace / laravel-enum
Laravel 枚举生成器。
Requires
- php: ^7.1
- illuminate/console: ^5.6|^6.0|^7.0|^8.0
- illuminate/support: ^5.6|^6.0|^7.0|^8.0
- rexlabs/enum: ^2.0
Requires (Dev)
- orchestra/testbench: ^3.6|^4.0|^5.0|^6.0
- phpunit/phpunit: >=7.0
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-11 11:23:52 UTC
README
Laravel 包,引入了新的 Artisan 命令,用于生成枚举类。
它提供了一种简单的语法来指定和映射枚举类中的常量,同时添加 PHPDoc 标签,以便 IDE 识别可以调用的常量作为实例化枚举类的方法。
安装
通过 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
将常量名称转换为小写以生成键
以下配对命令生成相同的枚举类
$ 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许可证(MIT)。请参阅许可证文件获取更多信息。