iqomp/enum

静态枚举提供者

2.0.3 2021-04-29 04:55 UTC

This package is auto-updated.

Last update: 2024-08-29 05:31:18 UTC


README

静态数据枚举提供者。此模块提供可能由应用程序使用的枚举列表。

安装

composer require iqomp/enum

发布配置

php bin/hyperf.php vendor:publish iqomp/enum

配置

要添加新的枚举数据或修改现有数据,请修改 /config/autoload/enum.php 文件,以返回以下数据:

<?php

return [
    'enums' => [
        'gender' => [
            '0' => 'Unknown',
            '1' => 'Male',
            '2' => 'Female',
            '3' => 'Non-Binary'
        ]
    ]
];

或者,如果您喜欢使用 ConfigProvider.php 文件,请按以下方式添加数据:

<?php

// ...
class ConfigProvider
{
    public function __invoke()
    {
        return [
            'enum' => [
                'enums' => [
                    'gender' => [
                        '0' => 'Unknown',
                        '1' => 'Male',
                        '2' => 'Female',
                        '3' => 'Non-Binary'
                    ]
                ]
            ]
        ];
    }
}

请确保更新您的 composer.json 文件,以便 hyperf 识别配置文件

    "extra": {
        "hyperf": {
            "config": "Vendor\\Module\\ConfigProvider"
        }
    }

翻译

如果您希望枚举标签被翻译,请确保安装模块 hyperf/translation。在 storage/languages/vendor/enum/{locale}/{enum-name}.php 文件夹中添加新的翻译。

<?php
// gender.php

return [
    'Unknown'    => 'Unknown',
    'Female'     => 'Female',
    'Male'       => 'Male',
    'Non-Binary' => 'Non Binary'
];

用法

使用类 Iqomp\Enum\Enum 创建具有指定值的枚举对象。

<?php

use Iqomp\Enum\Enum;

// $enum = new Enum('gender', '1', 'int');
$enum = new Enum('std-gender', '2', 'str');

$enum->value;
$enum->options;
$enum->label;

方法

该类对象定义的方法列表

__construct(string $name, $value=null, string $type=null): Enum

创建新的枚举对象。此方法接受以下参数:

  1. name::string 枚举数据列表的名称。
  2. value::int|str 枚举项的值。
  3. type::string 将提供的值转换为 intstr

__get($name): mixed

获取枚举数据属性,接受名称为 valuelabeloptions

__toString(): string

返回字符串枚举标签。

jsonSerialize()

将枚举转换为 json_encode 准备的参数。

表单验证器

如果您正在使用 iqomp/validator 对象或表单验证器,此模块添加了一个名为 enum 的新表单验证规则,以验证用户提供的数据是否在已注册的枚举中。

enum => name

确保用户提供的值在已注册的枚举中,用户提交的数据的值可以是单个 int/str 或它们的数组。

    // ...
    'rules' => [
        'enum' => 'std-gender'
    ]
    // ...

代码检查器

运行以下脚本以运行 psr-12 代码检查器

composer lint

格式化器

如果您正在使用 iqomp/formatter 对象格式化器,此模块添加了一个名为 enum 的新对象格式类型,以及 multiple-enum,可以将对象属性值转换为枚举对象。

enum

将当前对象属性值转换为 Iqomp\Enum\Enum 对象。

    // ...
    '/field/' => [
        'type' => 'enum',
        'enum' => 'std-gender'
    ]
    // ...

multiple-enum

将当前对象属性值转换为以自定义分隔符分隔的 Iqomp\Enum\Enum 数组

    // ...
    '/field/' => [
        'type' => 'multiple-enum',
        'enum' => 'std-gender',
        'separator' => ',' // PHP_EOL, 'json'
    ]
    // ...

如果未设置属性 separator,则使用 PHP_EOL。它还接受分隔符 'json',这将使用 json_decode 进行分隔。如果对象属性的值已经是数组,则不使用分隔符或 explode。