枚举枚举没有php
#网络开发人员 #php #php8 #枚举

在本文中,我们将看到php v8.1中的枚举的功能,这些功能是纯粹的情况,并在枚举中得到支持以及常规类和枚举之间的差异。

基本语法

php 8.1使用关键字枚举来声明枚举。语法类似于性状,类和界面的语法。看看一个简单的枚举:

enum Senioridade {
    case Junior;
    case Pleno;
    case Senior;
    case Especialista;
}

关键字case用于描述枚举接受的特定值。结束的情况与班级常数相同:

$nivel = Senioridade::Especialista;

枚举的优点是它们解决了恒定值的集合。枚举主要与类和界面相同的方式起作用。因此,可以制作键入函数仅接受枚举中定义的一个值的键入:

class Programador {

    public function __construct(
        public string $nome,
        public Senioridade $nivel
    ){}
}

在此示例中,您可以通过Koud2类中的Enum Koud1通过:

$programador = new Programador("Marcello", Senioridade::Especialista);

支持的枚举(定义值)

eNumnum的值由对象内部表示,但是如果需要,您可以为它们分配一个值;例如,这是在数据库中提供的。

enum Senioridade: int {
    case Junior = 1;
    case Pleno = 2;
    case Senior = 3;
    case Especialista = 4;
}

在这里,eNum Senioridade已修改以创建一个支持的int -type枚举。

这是一些支持枚举的规则:

  • 他必须在枚举声明中声明标量类型。而且只允许Koud5或Koud4。
  • 它必须为所有情况分配一个值。
  • 归因于每种情况的值应为相同的标量类型。
  • 不应包含重复的案例或值。

要获得归因的值,请使用->value属性:

$programador->nivel->value

但是,如果您需要获取名称,请使用->name属性:

$programador->nivel->name

标量值

当我们想恢复枚举的标量值时,我们可以使用整个from()。这个母亲收到字符串值或整体,并将其转换回枚举。

Senioridade::from(3) // Senior

如果传递一个不对应的值与允许的值,则会有致命的错误。

Senioridade::from(100); // PHP fatal error

以上将导致致命的PHP错误,因为资历中不存在“ 100”的值。
为了使这个更安全,PHP 8.1为我们提供了一个整个tryFrom(),它将返回null而不是发出错误。

Senioridade::tryFrom(100) // NULL

母亲©全部枚举

枚举可能包含所有人。他们还支持母亲的可见性修饰符以及所有愚蠢的人。
例如,宣布母亲©所有label(): string,它返回了列举案件的友好标签。

enum Senioridade: int {
    case Junior = 1;
    case Pleno = 2;
    case Senior = 3;
    case Especialista = 4;

    public function label(): string {
        return match ($this) {
            self::Junior => "Dev Junior",
            self::Pleno => "Dev Pleno",
            self::Senior => "Dev Sênior",
            self::Especialista => "Dev Especialista"
        };
    }
}

要获得标签的值,它是如此呼唤整体,以至于我们创建了label()

$programador = new Programador("Marcello", Senioridade::Especialista);

$programador->nivel->label() // Dev Especialista

清单值

您可以使用完整的Enum::cases()获取枚举中所有昂贵案例的列表。这个母亲返回一个包含真实对象的矩阵:

Senioridade::cases()

最终考虑

这是枚举的总体,但是使用枚举时可以探索许多其他事情,可以在RFC上检查一下(请求评论)。
这是用于完整阅读的RFC链接:
https://wiki.php.net/rfc/enumerations