cerbero/laravel-enum

Laravel 枚举生成器。

1.3.1 2022-11-10 09:10 UTC

This package is auto-updated.

Last update: 2024-09-10 13:04:52 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

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

贡献

请参阅 CONTRIBUTINGCODE_OF_CONDUCT 了解详细信息。

安全性

如果您发现任何安全问题,请通过电子邮件 andrea.marco.sartori@gmail.com 而不是使用问题跟踪器

致谢

许可证

麻省理工学院许可协议(MIT)。有关更多信息,请参阅许可文件