如何在PHP中为枚举类添加DocType类型注解?
PHP枚举类的PHPDoc类型注解方案
针对你问的枚举类DocType问题,目前主流静态分析工具和IDE支持的PHPDoc语法里,确实存在专门用于枚举类的类型注解:
- 通用枚举类类型:
enum-class - 带回退值的枚举类类型:
backed-enum-class
用这两个类型标注枚举类的字符串类型后,编辑器就能识别枚举特有的静态方法::from()、::tryFrom()和::cases()。
示例用法
通用枚举类
/** * @param enum-class<MyBaseEnum> $enumClass */ function processEnum(string $enumClass): void { // 编辑器会自动提示cases()、from()、tryFrom()等方法 $allCases = $enumClass::cases(); $enumInstance = $enumClass::tryFrom('test-value'); }
带回退值的枚举类
如果是限定为有回退类型(int/string)的枚举,可以用backed-enum-class,还能指定回退值类型和枚举类:
/** * @param backed-enum-class<string, MyStringBackedEnum> $enumClass */ function handleStringBackedEnum(string $enumClass): void { $validEnum = $enumClass::from('valid-string-value'); }
补充说明
enum-class和class-string的用法逻辑一致,泛型参数用于限制枚举的具体类型,帮助静态分析工具做更严格的检查value-of<Enum>是用来标注枚举实例的类型,而enum-class是标注枚举类本身的字符串类型,二者用途不同
内容的提问来源于stack exchange,提问作者Joel Harkes
相关产品推荐
相关产品推荐

