【无标题】

PHP 使用常量实现枚举类

php 复制代码
<?php
abstract class Enum {
    private static $constCacheArray = NULL;

    private static function getConstants() {
        if (self::$constCacheArray == NULL) {
            self::$constCacheArray = [];
        }
        $calledClass = get_called_class();
        if (!array_key_exists($calledClass, self::$constCacheArray)) {
            $reflect = new ReflectionClass($calledClass);
            self::$constCacheArray[$calledClass] = $reflect->getConstants();
        }
        return self::$constCacheArray[$calledClass];
    }

    public static function getEnumValue($constant) {
        $constants = self::getConstants();
        return $constants[$constant] ?? null;
    }
}

class StatusCode extends Enum {
    const OK = 200;
    const NOT_FOUND = 404;
    // ... 其他状态码
}

// 使用类常量直接访问枚举值
$statusCode = StatusCode::getEnumValue(StatusCode::OK);
echo $statusCode; // 输出 200
相关推荐
wuwu_q11 小时前
用通俗易懂方式,详细讲讲 Kotlin Flow 中的 map 操作符
android·开发语言·kotlin
曼巴UE511 小时前
UE5 C++ Slate 画曲线
开发语言·c++·ue5
向葭奔赴♡11 小时前
Spring IOC/DI 与 MVC 从入门到实战
java·开发语言
minji...11 小时前
C++ 面向对象三大特性之一---多态
开发语言·c++
Tigshop开源商城系统11 小时前
Tigshop 开源商城系统 php v5.1.9.1版本正式发布
java·大数据·开源·php·开源软件
散峰而望12 小时前
基本魔法语言函数(一)(C语言)
c语言·开发语言·编辑器·github
lucky_syq12 小时前
Scala与Spark算子:大数据处理的黄金搭档
开发语言·spark·scala
封奚泽优12 小时前
使用Labelme进行图像标注
开发语言·python·labelme
wjs202412 小时前
C 标准库 - <ctype.h>
开发语言
wjs202412 小时前
AngularJS与SQL的集成使用指南
开发语言