iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP8.1新特性Enum像Java一样使用枚举
  • 172
分享到

PHP8.1新特性Enum像Java一样使用枚举

php后端 2023-10-20 09:10:36 172人浏览 泡泡鱼
摘要

了解Java的PHP程序员都知道,php一直以来是没有Enum这个特性的,虽然有一个扩展的类可以实现类似的功能,但总感觉不是“原生”,刚好现在需要用到PHP8.1版本,这里记录一下对PHP的枚举Enum的简单使用。 先定义一个枚举Trai

了解Java的PHP程序员都知道,php一直以来是没有Enum这个特性的,虽然有一个扩展的类可以实现类似的功能,但总感觉不是“原生”,刚好现在需要用到PHP8.1版本,这里记录一下对PHP的枚举Enum的简单使用。

先定义一个枚举Trait,因为PHP的枚举不能扩展。

name;        }, self::cases());    }        // 以['key' => 'value', ...]形式返回枚举内容,可供select组件选择使用    public static function keyValues(): array    {        $result = [];        foreach (self::cases() as $item) {            $result[$item->name] = $item->value;        }        return $result;    }    // 判断持久层返回的是否相同    public function equal(string $value): bool    {        return self::tryFrom($value) === $this;    }    // 判断string key是否包含在枚举里面    public static function include(string $value): bool    {        return in_array($value, self::keys());    }    // 判读多个string key是否全部包含在枚举里面    public static function includeAll(array $names): bool    {        $keys = self::keys();        foreach ($names as $name) {            if (!in_array($name, $keys)) {                return false;            }        }        return true;    }}

定义枚举

具体应用

 valueProductType::keyValues();// output: ['PRODUCT' => '商品', 'SERVICE' => '服务', 'CONSUMPTION' => '消耗品']// 这里我用于前端Select组件选择,保存key值在数据库中,如:ProductModel.product_type = 'PRODUCT'// 在前端列表等显示界面,通过product_type = 'PRODUCT'显示出“商品”// 简单判断类型if (ProductType::PRODUCT->equal(ProductModel.product_type)) {    // ...} else if (ProductType::SERVICE->equal(ProductModel.product_type)) {    // ...} else {}// 判断是否包含key,如:前端输入的值是否合法$formData = ['product_type' => 'PRODUCT'];ProductType::include($formData['product_type']);// output: true// 判断是否包含多个key,如:前端输入的多个值是否合法$formData = ['product_type' => ['PRODUCT', 'PRODUCT2']];ProductType::includeAll($fORMData['product_type']);// output: false

其它应用

前端的使用基本满足简单应用的情况了。如果还有更复杂的,可以深入了解。

例如使用PHP的注解结合枚举使用:

1、定义注解

value = $value;    }}

2、在枚举中使用 

name);        $attributes = $ref->getAttributes();        foreach ($attributes as $attribute) {            $args = $attribute->getArguments();            return $args[0];        }        return '';    }    public static function keyValues(): array    {        $result = [];        foreach (self::cases() as $item) {            $result[$item->value] = $item->getDescription();        }        return $result;    }}ProductType::PRODUCT->name; // PRODUCTProductType::PRODUCT->value; // 1ProductType::PRODUCT->getDescription(); // 商品ProductType::keyValues(); // [1 => '商品', 2 => '服务', 3 => '消耗品']

来源地址:https://blog.csdn.net/keechi/article/details/127383813

--结束END--

本文标题: PHP8.1新特性Enum像Java一样使用枚举

本文链接: https://www.lsjlt.com/news/432877.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作