php定义枚举,PHP枚举
根据用例,我通常会使用一些简单的实现代码,如下面的代码:
abstract class DaysOfWeek
{
const Sunday = 0;
const Monday = 1;
// etc.
}
$today = DaysOfWeek::Sunday;
然而,其他用例可能需要对常量和值进行更多的验证。下面是一个扩展的示例,可以更好地服务于更广泛的情况。
abstract class BasicEnum {
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 isValidName($name, $strict = false) {
$constants = self::getConstants();
if ($strict) {
return array_key_exists($name, $constants);
}
$keys = array_map('strtolower', array_keys($constants));
return in_array(strtolower($name), $keys);
}
public static function isValidValue($value, $strict = true) {
$values = array_values(self::getConstants());
return in_array($value, $values, $strict);
}
}
通过创建一个扩展BasicEnum的简单enum类,您现在可以使用方法来进行简单的输入验证:
abstract class DaysOfWeek extends BasicEnum {
const Sunday = 0;
const Monday = 1;
const Tuesday = 2;
const Wednesday = 3;
const Thursday = 4;
const Friday = 5;
const Saturday = 6;
}
DaysOfWeek::isValidName('Humpday'); // false
DaysOfWeek::isValidName('Monday'); // true
DaysOfWeek::isValidName('monday'); // true
DaysOfWeek::isValidName('monday', $strict = true); // false
DaysOfWeek::isValidName(0); // false
DaysOfWeek::isValidValue(0); // true
DaysOfWeek::isValidValue(5); // true
DaysOfWeek::isValidValue(7); // false
DaysOfWeek::isValidValue('Friday'); // false
原创文章,作者:犀牛前端部落,如若转载,请注明出处:https://www.pipipi.net/4493.html
php定义枚举,PHP枚举相关推荐
- 枚举,如何定义一个枚举,枚举的本质
什么是枚举? 枚举是一个引用类型,枚举是一个规定了取值范围的数据类型 枚举变量不能使用其他的数据,只能使用枚举中常量赋值,提高程序安全性 定义枚举使用enum关键字 定义枚举类需要注意的点: 1.枚举 ...
- Java--枚举类型(枚举类型介绍 定义枚举类型 枚举类型的使用 枚举类型的注意事项 遍历枚举项)
01: Java–枚举类型(枚举类型介绍 & 定义枚举类型 & 枚举类型的使用 & 枚举类型的注意事项 & 遍历枚举项) 02: Java–枚举类型(枚举类型实现接口 ...
- java 枚举定义变量_Java枚举(enum)
Free Talk 上学期上Java课时都没有听说过枚举的概念,这次偶然在JavaGuide博客中看到了,就想写一些枚举相关知识.本篇文章会较为深入地讲解一下枚举的强大功能. 写这边博客的时候,又发现 ...
- c++ main函数调用 类中的枚举_为啥用枚举,枚举有哪些用法?
Java基础:枚举的用法与原理 在学习过程中,我们也只是在定义常量的时候,会意识到枚举的存在,而定义常量其实可以在类中实现,这时就会感觉枚举有点鸡肋.但在实际项目开发的过程中,枚举因相当迷人的特性而受 ...
- java枚举和枚举类_Java枚举:您拥有优雅,优雅和力量,这就是我所爱!
java枚举和枚举类 当Java 8即将面世时,您确定您对Java 5中引入的枚举很熟悉吗? Java枚举仍然被低估了,很可惜,因为它们比您想象的要有用,它们不仅仅用于通常的枚举常量! Java枚举是 ...
- java的枚举_Java 枚举
Java 枚举 知识点 概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性. 在Java中,被 enum 关键字修饰的类型就是枚举类型.形式如下: enum Col ...
- kotlin枚举_Kotlin枚举班
kotlin枚举 In this tutorial, we'll be looking into Kotlin Enum classes. What's in store for them? How ...
- 面试官:为啥需要枚举?枚举有什么作用?怎么用枚举实现单例?
点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...
- Typescript - enum 枚举类型(数值型枚举 / 字符串枚举 / 常量枚举 / 异构枚举 / 计算枚举成员 / 联合枚举和枚举成员类型 / 运行时的枚举 / 环境枚举 / 对象与枚举)教程
前言 Enums(枚举)是 TypeScript 的少数功能之一,它不是 JavaScript 的类型级扩展,仅支持数字的和基于字符串的枚举. 使用枚举您可以定义一组带名字的常量,并且清晰地表达意图或 ...
- java的枚举类型是什么_什么是枚举(java枚举类型enum用法)
最佳回答 枚举 1.枚举 (enumeration) 值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称.枚举类型有名称.基础类型和一组字段.基础类型. &qu ...
最新文章
- 推荐60+ Flex开发参考网站
- linux中时间戳与date的互转
- 谁是最强的女汉子_JAVA
- 支持向量机SVM 简要推导过程
- CMM/CMMI的20年和敏捷十年
- flash 多个文件上传
- 漫画|你还记得原生的JDBC怎么连接数据库吗?
- Linux xargs命令
- ThoughtWorks技术雷达专区
- art-template入门(五)之模板变量
- 撸完这些JVM知识点,明天就去面试阿里P6+
- 【恋上数据结构】计数排序
- Linux常用解压文件
- mysql常用调试工具_最常用的8款PHP调试工具
- 使用OpenCV获取图像中某一点的像素值和修改某一点的像素值
- 扭矩大好还是马力大好_汽车马力大好还是小好,马力越大汽车的动力性就越好?...
- cdr多页面排版_CDR排版技巧
- Android 性能优化四个方面总结
- czl蒻蒟的OI之路3
- 农作物病害识别_FarmEasy:向农民推荐农作物变得容易