Mrcdh技术博客 Mrcdh技术博客
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Mrcdh

全栈开发小学生
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Mysql

  • PHP

    • PHP curl常见CURLE_SSL_CACERT (60)错误及get,post实例
    • PHP常用注解
    • PhpSpreadsheet操作Excel的基本使用
    • composer常用命令
    • php程序性能优化的一些方法
    • php常用内置函数
    • PHP常用框架伪静态
    • php遍历时发现最后一个元素的值随着遍历变化
    • tp5和laravel常用操作的区别
    • 使用phpword操作word
    • PHP常用扩展
    • PHP常用自定义方法
    • PHP框架
    • php枚举库php-enum的使用
      • 安装
      • 声明
      • 用法
      • 文档
      • 静态方法
      • 本机枚举和迁移
    • php快速接入微信支付宝支付easy-pay
  • Python

  • java

  • Go

  • 数据库

  • C#

  • ElasticSearch

  • Git

  • Gulp

  • Microsoft

  • Linux

  • 其它

  • 技术
  • PHP
mrcdh
2022-03-08
目录

php枚举库php-enum的使用

github:php-enum (opens new window)

# 安装

composer require myclabs/php-enum
1

# 声明

use MyCLabs\Enum\Enum;

/**
 * Action enum
 */
final class Action extends Enum
{
    private const VIEW = 'view';
    private const EDIT = 'edit';
}
1
2
3
4
5
6
7
8
9
10

# 用法

$action = Action::VIEW();

// or with a dynamic key:
$action = Action::$key();
// or with a dynamic value:
$action = Action::from($value);
// or
$action = new Action($value);
1
2
3
4
5
6
7
8

如您所见,静态方法会自动实现,以提供对枚举值的快速访问。

与使用类常量相比,一个优点是能够使用枚举作为参数类型:

function setAction(Action $action) {
    // ...
}
1
2
3

# 文档

  • __construct():构造函数检查枚举中是否存在该值
  • __toString():你可以,它将显示枚举值(常量的值)echo $myValue
  • getValue():返回枚举的当前值
  • getKey():返回枚举上当前值的键
  • equals():测试枚举实例是否相等(如果枚举值相等,则返回,否则返回)truefalse

# 静态方法

  • from():创建枚举实例,检查该值是否存在于枚举中
  • toArray():方法 以数组形式返回所有可能的值(键中的常量名称,值中的常量值)
  • keys():返回 Enum 类中所有常量的名称(键)
  • values():返回所有枚举常量的枚举类的实例(键中的常量名称,值中的枚举实例)
  • isValid():检查测试值在枚举集上是否有效
  • isValidKey():检查测试密钥在枚举集上是否有效
  • assertValidValue():断言该值在枚举集上有效,否则会引发异常
  • search():搜索值的返回键
final class Action extends Enum
{
    private const VIEW = 'view';
    private const EDIT = 'edit';
}

// Static method:
$action = Action::VIEW();
$action = Action::EDIT();
1
2
3
4
5
6
7
8
9

静态方法帮助程序是使用 __callStatic() 实现的。

如果您关心 IDE 自动完成,则可以自己实现静态方法:

final class Action extends Enum
{
  private const VIEW = 'view';

  /**
   * @return Action
   */
  public static function VIEW() {
    return new Action(self::VIEW);
  }
}
1
2
3
4
5
6
7
8
9
10
11

或者你可以使用 phpdoc(例如,PhpStorm 支持这一点):

/**
 * @method static Action VIEW()
 * @method static Action EDIT()
 */
final class Action extends Enum
{
  private const VIEW = 'view';
  private const EDIT = 'edit';
}
1
2
3
4
5
6
7
8
9

# 本机枚举和迁移

本机枚举在 8.1 版中到达 PHP:https://www.php.net/enumerations 如果您的项目运行 PHP 8.1+ 或您的库将其作为最低要求,则应使用它而不是此库。

从 中迁移时,如果采用推荐的方式使用,则工作量应该很小:myclabs/php-enum

  • private constants
  • final classes
  • no method overridden

迁移更改:

  • 类定义应从
/**
 * @method static Action VIEW()
 * @method static Action EDIT()
 */
final class Action extends Enum
{
    private const VIEW = 'view';
    private const EDIT = 'edit';
}
1
2
3
4
5
6
7
8
9

自

enum Action: string
{
    case VIEW = 'view';
    case EDIT = 'edit';
}
1
2
3
4
5

将类用作类型的所有位置将继续工作。

用法和所需的更改:

操作 myclabs/php-enum 本机枚举
获取实例将从 $enumCase = Action::VIEW() $enumCase = Action::VIEW
从支持的值创建枚举 $enumCase = new Action('view') $enumCase = Action::from('view')
获取枚举实例的备份值 $enumCase->getValue() $enumCase->value
比较两个枚举实例 $enumCase1 == $enumCase2
或
$enumCase1->equals($enumCase2)
$enumCase1 === $enumCase2
获取枚举实例的密钥/名称 $enumCase->getKey() $enumCase->name
获取枚举的所有可能实例的列表 Action::values() Action::cases()
获取按名称映射的枚举的可能实例的映射 Action::values() array_combine(array_map(fn($case) => $case->name, Action::cases()), Action::cases())
或
(new ReflectionEnum(Action::class))->getConstants()
获取枚举的所有可能名称的列表 Action::keys() array_map(fn($case) => $case->name, Action::cases())
获取枚举的所有可能支持值的列表 Action::toArray() array_map(fn($case) => $case->value, Action::cases())
获取按名称映射的枚举的可能支持值的映射 Action::toArray() array_combine(array_map(fn($case) => $case->name, Action::cases()), array_map(fn($case) => $case->value, Action::cases()))
或
array_map(fn($case) => $case->value, (new ReflectionEnum(Action::class))->getConstants()))
#php
上次更新: 2023/09/22, 16:54:32
PHP框架
php快速接入微信支付宝支付easy-pay

← PHP框架 php快速接入微信支付宝支付easy-pay→

最近更新
01
uniapp常见问题
03-19
02
Vue3项目搭建
12-25
03
使用pnpm的monorepo组织项目
11-01
更多文章>
Theme by Vdoing | Copyright © 2020-2025 Mrcdh | 苏ICP备2020058908号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×