Download the PHP package hyperf-ext/enum without Composer

On this page you can find all versions of the php package hyperf-ext/enum. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package enum

Hyperf 枚举组件

关于

简单、可扩展且强大的枚举实现。

移植自 bensampo/laravel-enum

索引

安装

基本用法

枚举定义

可以使用一些命令来生成新的枚举类:

现在只需将所有可能值作为常量添加到枚举类即可。

这样就完成了。注意,由于枚举值被定义为常量,你可以像使用其他类常量一样简单地使用它们。

实例化

实例化枚举有助于在传递它们时带来类型提示的益处。

此外,由于无效的值不能被实例化,因此可以确保传递的值是始终有效的。

为了方便,枚举可以通过多种方式来实例化:

如果要使用 IDE 的自动完成,则可以通过命令生成 PHPDoc 注释。

默认情况下,app/Enum 目录中的所有枚举都会被添加相关注释(可以通过将目录路径传递给 --folder 选项来更改目录)。

也可以通过指定类名来为某个类添加注释。

实例属性

有了枚举实例后,可以将 keyvaluedescription 作为属性来访问。

这个功能在要将枚举实例传递到视图的场景下会很有用。

实例类型转换

枚举实例可以在实现 __toString() 魔术方法时转换为字符串。这也意味着它们可以在视图中直接输出。

实例相等性比较

我们可以通过将任意值传递给实例的 is 方法来确定实例是否与这些相等。为了方便起见,还有一个 isNot 方法,它与 is 方法的逻辑完全相反。

还可以使用 in 方法来确定实例的值是否与可能值的数组匹配。

类型提示

另一个枚举实例的益处是让我们可以使用类型提示,如下所示。

位标志/位移枚举

标准枚举一次只能表示一个值,但是位标志或位移枚举可以同时表示多个值。当要表达一组选项的多个选择时,这是最佳的选择。一个很好的例子就是用户权限,其中可能的权限数量有限,但是用户可以没有权限或是拥有全部或部分权限。

可以使用以下命令生成位标志枚举:

定义值

定义值时,必须使用 2 的幂,最简单的方法是使用左移位 << 运算符,如下所示:

定义位标志组合

可以使用按位 | 表示一组给定值的组合值作为快捷方式来使用。

实例化位标志枚举

有几种方法可以实例化位标志枚举:

属性转换的工作方式与单值枚举相同。

空位标志枚举

位标志枚举可以不包含任何值。每个标记的枚举都有一个预定义的常量 None,相当于 0

位标志枚举方法

除了标准的枚举方法,位标志枚举还提供了一组有用的方法。

注意:在任何可以传递静态属性的地方,也可以传递枚举实例。

setFlags(array $flags): Enum

将枚举的位标志设置为给定的位标志数组。

addFlag($flag): Enum

添加给定的位标志到枚举。

addFlags(array $flags): Enum

添加一组给定的位标志到枚举。

removeFlag($flag): Enum

从枚举中移除给定的位标志。

removeFlags(array $flags): Enum

从枚举中移除一组给定的位标志。

hasFlag($flag): bool

确定枚举中是否存在指定的位标志。

hasFlags(array $flags): bool

确定枚举中是否存在指定的全部位标志。

notHasFlag($flag): bool

确定枚举中是否不存在指定的位标志。

notHasFlags(array $flags): bool

确定枚举中是否不存在指定的任何一个位标志。

getFlags(): Enum[]

将位标志作为实例数组返回。

hasMultipleFlags(): bool

确定枚举是否有多个位标志。

getBitmask(): int

获取枚举的位掩码。

属性转换

我们可以使用 Hyperf 内置的自定义类型转换将模型属性转换为枚举。这将在获取时将属性强制转换为枚举实例,并在设置时转回为枚举值。 由于 Enum::class 实现了 Castable 接口,因此只需要指定枚举的类名即可:

现在,当访问 Example 模型的 user_type 属性时,基础值将作为 UserType 枚举返回。

查阅枚举实例可用的方法和属性,以充分了解属性转换。

我们还可以通过传递枚举值或另一个枚举实例来设置该值。

转换基础原生类型

有些数据库会以字符串的形式返回所有内容(例如,整数可能以字符串 '1' 的形式返回)。

为了减少用户的麻烦,我们使用强类型来确定预期值。如果期望控制它,则可以在枚举类上重写 parseDatabase 静态方法:

parseDatabase 方法中返回 null 会使模型上的属性也为 null。如果数据库存储了不一致的空白值(例如空字符串)而不是 NULL,那么这会很有用。

数据库迁移

推荐

由于枚举在代码级别强制一致性,因此不必在数据库级别再做这些工作。依据枚举值,数据库字段的推荐类型为 stringint。这就意味着我们可以在代码中添加或删除枚举值,而不必顾及数据库层。

使用 enum 字段类型

另外,我们可以在迁移中使用枚举来定义枚举字段。枚举值必须定义为字符串。

验证器

数组验证器

枚举值

我们可以使用 EnumValue 规则来验证传递的枚举值是否是给定枚举的有效值。

默认情况下,类型检查被设置为严格模式,但是可以通过向 EnumValue 类的可选第二个参数传递 false 来绕过此检查。

枚举键

我们也可以使用 EnumKey 规则对枚举键进行验证。例如,如果将枚举键用作 URL 参数进行排序或过滤,这会很有用。

枚举实例

另外,我们可以验证参数是否为给定枚举的实例。

管道验证

也可以将“管道”语法用于验证规则。

enum_value_:enumclass,[strict]
enum_key_:enumclass
enum_:enumclass

本地化

本地化支持依赖 hyperf/translation 组件,不要忘记发布其配置并按需设置。

关于 hyperf/translation 组件的使用请阅读 Hyperf 官方文档

验证器错误信息

运行以下命令将语言文件发布到你的 storage/languages 目录中。

枚举描述

如果尚未通过 vendor:publish 命令发布语言文件,请先按照上面那条命令来发布。

在此示例中,我们配置了英语和西班牙语两个语言文件。

最后,只需确保枚举类实现 LocalizedEnum 接口即可,如下所示:

getDescription 方法将在语言文件中查找翻译的文本。如果给定键的值不存在,则返回默认描述。

重写 getDescription 方法

如果要通过 getDescription 方法返回自定义值,可以在枚举类中重写该方法来实现:

现在,调用 UserType::getDescription(3); 将返回 Super administator 而不是 Super admin

扩展枚举基类

枚举基类 Enum 实现了 Hyperf Macroable 特性,这意味着我们可以使用自己的函数轻松对其进行扩展。如果有经常要添加到每个枚举的函数,则可以使用宏。

假设我们期望获得枚举类 asArray 方法的键值反转的版本,可以使用以下方法完成此操作:

现在在每个枚举中都可以使用 UserType::asFlippedArray() 来调用它。

建议通过监听服务启动相关事件来注册宏。

PHPStan 集成

如果要使用 PHPStan 进行静态分析,可以启用扩展程序以正确识别魔术实例化方法。

将以下内容添加到项目的 phpstan.neon 的 includes 中:

命令列表

生成一个新的枚举类。传递 --flagged 选项可以创建位标志枚举。了解更多

为枚举类生成 DocBlock 注释。了解更多

Enum 类参考

static getKeys(): array

返回包含枚举所有键的数组。

static getValues(): array

返回包含枚举所有值的数组。

static getKey(mixed $value): string

返回给定枚举值的键。

static getValue(string $key): mixed

返回给定枚举键的值。

static hasKey(string $key): bool

确定枚举中是否含有给定的键。

static hasValue(mixed $value, bool $strict = true): bool

确定枚举中是否含有给定的值。

static getDescription(mixed $value): string

以句首字母大写形式返回枚举键。可以通过重写 getDescription 方法来返回自定义描述。

static getRandomKey(): string

随机返回枚举的一个键。

static getRandomValue(): mixed

随机返回枚举的一个值。

static getRandomInstance(): mixed

随机返回枚举的一个实例。

static asArray(): array

将枚举键值作为关联数组返回。

static asSelectArray(): array

返回 value => description 形式的数组。

static fromValue(mixed $enumValue): Enum

返回被调用枚举的实例。进一步了解枚举实例化。

static getInstances(): array

返回一个包含被调用枚举的所有可能实例的数组,以常量名作为键。

static coerce(mixed $enumKeyOrValue): ?Enum

尝试使用给定的键或值实例化一个新的枚举。如果无法实例化,则返回 null


All versions of enum with dependencies

PHP Build Version
Package Version
Requires php Version >=7.3
ext-json Version *
ext-swoole Version >=4.5
doctrine/dbal Version ^3.0
hanneskod/classtools Version ~1.0
hyperf/database Version ~2.2.0
hyperf/di Version ~2.2.0
hyperf/filesystem Version ~2.2.0
hyperf/framework Version ~2.2.0
hyperf/validation Version ~2.2.0
laminas/laminas-code Version ^3.4
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package hyperf-ext/enum contains the following files

Loading the files please wait ....