您现在的位置是:首页 > PHP框架交流PHP框架交流

PHP8.1新特性枚举 枚举的简单用法

上善若水2024-03-05 15:33:42【PHP框架交流】 743人已围观

简介PHP8.1新特性枚举枚举的简单用法1.枚举类型的定义 enumStatus:int { caseDraft=1; casePublished=2; case

PHP8.1新特性枚举 枚举的简单用法
官方教程https://www.php.net/manual/zh/language.enumerations.overview.php
1.枚举类型的定义

enum Status: int
{
    case Draft = 1;
    case Published = 2;
    case Archived = 3;
}

2.枚举类型的简单使用

print_r(Status::Draft);
/** 输出如下内容
Status Enum:int
(
    [name] => Draft
    [value] => 1
)*/

echo sprintf('[draft name]: %s, [draft value]: %d',Status::Draft->name,Status::Draft->value);
//[draft name]: Draft, [draft value]: 1

//枚举类型的遍历
foreach( Status::cases() as $directive ) {
    echo sprintf('[name]: %s, [value]: %d %s', $directive->name, $directive->value, PHP_EOL);
}
//输出结果
[name]: Draft, [value]: 1 
[name]: Published, [value]: 2 
[name]: Archived, [value]: 3

3.枚举类型最佳实践

enum UserStatus: string
{
    case Pending = 'P';
    case Active = 'A';
    case Suspended = 'S';
    case CanceledByUser = 'C';

    public function label(): string
    {
        return match($this) {
            static::Pending => 'Pending',
            static::Active => 'Active',
            static::Suspended => 'Suspended',
            static::CanceledByUser => 'Canceled by user',
        };
    }
}

foreach (UserStatus::cases() as $case) {
    printf('<option value="%s">%s</option>\n', $case->value, $case->label());
}

最后,输出结果

<option value="P">Pending</option>
<option value="A">Active</option>
<option value="S">Suspended</option>
<option value="C">Canceled by user</option>

Tags: PHP8.1

很赞哦! (1)

文章评论

站点信息

  • 建站时间:2019-10-24
  • 网站程序:Thinkphp6 Layui
  • 文章统计247篇文章
  • 标签管理标签云
  • 统计数据cnzz统计
  • 微信公众号:扫描二维码,关注我们