定制 prinsfrank/enums 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

prinsfrank/enums

最新稳定版本:v1.4.1

Composer 安装命令:

composer require prinsfrank/enums

包简介

Adds missing strictly typed methods to work with enums

README 文档

README

Banner

Enums

GitHub PHP Version Support codecov PHPStan Level

Adds missing strictly typed methods to work with enums

Setup

Note Make sure you are running PHP 8.1 or higher to use this package

To start right away, run the following command in your composer project;

composer require prinsfrank/enums

Or for development only;

composer require prinsfrank/enums --dev

How this package works

UnitEnum

Let's assume we have the following UnitEnum:

enum Example {
    case Foo;

    #[HasSpecialMeaning]
    case Bar;
}

If we want to get a value by it's name from a string, we can call fromName or tryFromName;

UnitEnum::fromName(Example::class, 'Foo'); // Example::Foo
UnitEnum::tryFromName(Example::class, 'Foo'); // Example::Foo

The difference between the two methods is the way non-existing names are handled;

UnitEnum::fromName(Example::class, 'Example'); // @throws NameNotFoundException
UnitEnum::tryFromName(Example::class, 'Example'); // null

Another method that this package provides is to get an array of all the names for an enum;

UnitEnum::names(Example::class); // ['Foo', 'Bar']

And finally some methods to easily get the attributes of an enum case:

UnitEnum::hasCaseAttributes(Example::Bar, HasSpecialMeaning); // true
UnitEnum::getCaseAttributes(Example::Bar); // [new HasSpecialMeaning()]

BackedEnum

Let's assume we have the following BackedEnum: (It doesn't matter if an enum is backed by a string or an integer)

enum Example: string {
    case Foo = 'Foo';

    #[HasSpecialMeaning]
    case Bar = 'Bar';
}

If we want to get a value by it's name from a string, we can call fromName or tryFromName;

BackedEnum::fromName(Example::class, 'Foo'); // Example::Foo
BackedEnum::tryFromName(Example::class, 'Foo'); // Example::Foo

The difference between the two methods is the way non-existing names are handled;

BackedEnum::fromName(Example::class, 'Example'); // @throws NameNotFoundException
BackedEnum::tryFromName(Example::class, 'Example'); // null

Another method that this package provides is to get an array of all the names for an enum;

BackedEnum::names(Example::class); // ['Foo', 'Bar']

And finally some methods to easily get the attributes of an enum case:

BackedEnum::hasCaseAttributes(Example::Bar, HasSpecialMeaning); // true
BackedEnum::getCaseAttributes(Example::Bar); // [new HasSpecialMeaning()]

统计信息

  • 总下载量: 348.14k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 1
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-12-29