新闻详情

新闻详情

首页 / 资讯中心 / 详情

PHP枚举与状态管理完全指南

发布时间:2026/9/1 11:47:05来源:尧图网络
PHP枚举与状态管理完全指南
PHP枚举与状态管理完全指南PHP8.1正式引入了枚举类型。这是PHP类型系统的一个重要增强。枚举让状态管理更安全更清晰。今天说说枚举的使用。枚举定义一组有限的可能值。phpenum OrderStatus{case Pending;case Paid;case Shipped;case Delivered;case Cancelled;}function processOrder(OrderStatus $status): string{return match ($status) {OrderStatus::Pending 待支付,OrderStatus::Paid 已支付,OrderStatus::Shipped 已发货,OrderStatus::Delivered 已签收,OrderStatus::Cancelled 已取消,};}$status OrderStatus::Paid;echo processOrder($status) . \n;echo $status-name . \n;?字符串回退枚举可以存储到数据库。phpenum UserRole: string{case Admin admin;case Editor editor;case User user;public function label(): string{return match ($this) {self::Admin 管理员,self::Editor 编辑,self::User 普通用户,};}public function permissions(): array{return match ($this) {self::Admin [create, read, update, delete],self::Editor [create, read, update],self::User [read],};}}$role UserRole::from(admin);echo $role-label() . \n;echo $role-can(delete) ? 有权限 : 无权限 . \n;foreach (UserRole::cases() as $role) {echo {$role-name}: {$role-value} - {$role-label()}\n;}?枚举在订单状态管理中的应用。phpenum PaymentStatus: string{case Pending pending;case Processing processing;case Completed completed;case Failed failed;case Refunded refunded;public function canRefund(): bool{return in_array($this, [self::Completed, self::Processing]);}public function isFinal(): bool{return in_array($this, [self::Completed, self::Failed, self::Refunded]);}}class Payment{public function __construct(public int $id,public float $amount,public PaymentStatus $status PaymentStatus::Pending) {}public function complete(): void{if ($this-status ! PaymentStatus::Processing) throw new RuntimeException(不能完成);$this-status PaymentStatus::Completed;}public function refund(): void{if (!$this-status-canRefund()) throw new RuntimeException(不能退款);$this-status PaymentStatus::Refunded;}}$payment new Payment(1, 99.99);$payment-status PaymentStatus::Processing;$payment-complete();echo 状态: {$payment-status-value}\n;echo 可退款: . ($payment-status-canRefund() ? 是 : 否) . \n;?枚举让状态管理更加类型安全避免了用字符串或整数表示状态时的拼写错误和无效值问题。枚举和数据库的配合也很自然可以用value存储到数据库的字符串字段。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Classic ASP如何解析AJAX提交的JSON数据 2026/9/2 4:54:03

Classic ASP如何解析AJAX提交的JSON数据

简介:面向使用ASP开发动态Web应用的工程师,本实例完整演示了在服务端接收AJAX请求并解析其中JSON数据的方法,可应用于用户输入验证、数据更新、局部刷新等常见交互场景。资源压缩包仅19KB,共6个文件,包括4个ASP处理脚本…

阅读更多 →
C++编程实例100篇:从语法到项目的实战进阶指南 2026/9/2 4:54:03

C++编程实例100篇:从语法到项目的实战进阶指南

简介:这是一套以100个实例应用为主线的C编程学习资源,覆盖基础语法、面向对象、标准库、模板及异常处理等核心主题,既能帮助初学者通过短小结实例快速上手,也能供有经验的开发者查漏补缺、积累实战写法。压缩包共557个文件、约2.4…

阅读更多 →
iCloud照片图库文件状态解析:为何本地文件被标记为“在iCloud中” 2026/9/2 4:54:03

iCloud照片图库文件状态解析:为何本地文件被标记为“在iCloud中”

你有没有遇到过这样的场景:在 Apple Photos 里,你刚导入一批新照片,准备开始编辑或分享其中某一张。你看到照片缩略图已经显示,但当你尝试打开它进行一些操作时,却弹出一个恼人的提示,告诉你文件“在 iClou…

阅读更多 →
Python Flask构建ASMR触发器管理系统:从数据建模到智能播放列表生成 2026/9/2 4:54:03

Python Flask构建ASMR触发器管理系统:从数据建模到智能播放列表生成

在数字内容创作领域,ASMR(自发性知觉经络反应)以其独特的沉浸式体验,成为许多人放松身心、辅助睡眠的有效工具。然而,面对海量的ASMR内容,如何高效地制作、管理并整合那些能精准触发个人放松反应的“触发器…

阅读更多 →
飞机起落架四连杆机构Matlab仿真:运动学与动力学建模解析 2026/9/2 4:54:03

飞机起落架四连杆机构Matlab仿真:运动学与动力学建模解析

简介:这是一份基于Matlab的四连杆机构动力学分析代码包,聚焦飞机起落架机械机构的运动学与动力学建模。内容涵盖运动图绘制、连杆与关节类型识别、接地点坐标求解等关键环节,并附带仿真代码与图示,适合机械工程、机器人学方向的学…

阅读更多 →
Windows 11编译安装pysqlcipher3:从环境配置到踩坑全记录 2026/9/2 4:51:02

Windows 11编译安装pysqlcipher3:从环境配置到踩坑全记录

简介:针对在 Windows 11 环境下编译安装 pysqlcipher3 的常见痛点,这份源码包提供了完整的工程文件与配置模板,尤其适合需要为 SQLite 数据库增加 SQLCipher 透明加密支持、且习惯在桌面端开发与调试的 Python 工程师。压缩包共 69 个文件、约…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞