mudandstars/sync-enum-types

这是我的包 sync-enum-types

v1.3 2023-08-28 15:33 UTC

This package is auto-updated.

Last update: 2024-09-28 17:54:51 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

此包包含一个命令,用于为您 PHP 的 Enums 创建 TypeScript 声明文件。此命令可以设置为在保存时自动运行,例如。

安装

您可以通过 composer 安装此包

composer require mudandstars/sync-enum-types --dev

使用(VS Code)

  1. 根据您的项目结构检查已发布的配置是否需要更改
  2. 安装“保存时运行”扩展
  3. 将“保存时运行”命令添加到您的 settings.json(我喜欢使用工作区设置)
{
	...other settings

	"emeraldwalk.runonsave": {
		"commands": [
			{
				"match": ".*/Enum/.*\\.php$",
				"cmd": "php artisan sync-enum-types"
			}
		]
	}
}

配置

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="sync-enum-types-config"

推荐的配置将 SYNC_CASES 设置为 true,以便将枚举情况作为类型数组提供,以便在前端使用。其最新版本如下所示

// config/sync-enum-types.php
return [
    'PHP_ENUM_FOLDER_DESTINATION' => app_path('Enum'),
    'TYPESCRIPT_ENUM_FOLDER_DESTINATION' => app_path('../resources/ts/types/Enum'),

    'SYNC_CASES' => true,
    'CASES_FOLDER_DESTINATION' => app_path('../resources/ts/EnumCases'),

    'EXCEPTIONS' => [],
]

可能的枚举功能和标志

使用自定义方法的描述

为了避免在更改数据库中的枚举值时与现有数据冲突,一些工程师更喜欢使用简单的整数作为它们的值,并使用函数来描述这些值的含义,如下所示

enum MyEnum: int
{
    case FIRST_CASE = 1;
    case SECOND_CASE = 2;

    public function description(): string
    {
        return match($this) {
            self::FIRST_CASE => 'first case description',
            self::SECOND_CASE => 'second case description',
        };
    }

    public function someOtherFunction()...
}

如果您想从枚举的方法而不是其情况的值同步描述,请在相应的函数上方放置 sync-using-method 标志,如下所示

enum MyEnum: int
{
    case FIRST_CASE = 1;
    case SECOND_CASE = 2;

    // @sync-enum-types: sync-using-method
    public function description(): string
    {
        return match($this) {
            self::FIRST_CASE => 'first case description',
            self::SECOND_CASE => 'second case description',
        };
    }

    public function someOtherFunction()...
}

链接其他枚举

当使用多个枚举时,为了维护单一的真实来源,有时有必要定义如下所示的案例

    case MY_CASE = MyOtherEnum::ITS_CASE->value;

这会自动正确处理并解析其他枚举的值,只要其源文件也位于同一目录。

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略

鸣谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件