新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/15 18:44:13来源:尧图网络
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

相关资讯

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

较早相关资讯

最新相关资讯

回执失败为何不触发重试?解构调度链中的契约断层 2026/9/16 10:44:36

回执失败为何不触发重试?解构调度链中的契约断层

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
YuE协议:混合AR/NAR生成的轻量级Transformer编排中间件 2026/9/16 10:44:36

YuE协议:混合AR/NAR生成的轻量级Transformer编排中间件

1. “YuE”不是拼写错误,而是当前生成式AI领域一个正在快速演化的技术代号最近在Hugging Face Spaces、GitHub Trending和几个核心AI开发者论坛里,“YuE”这个词出现频率陡增——它既不是某个新出的开源模型名称,也不是某家公司的产品代号&am…

阅读更多 →
Netmon抓包过滤器实战:Capture Filter与Display Filter详解 2026/9/16 10:44:36

Netmon抓包过滤器实战:Capture Filter与Display Filter详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Pentagi:基于Neo4j图谱与AI Agents的攻击链认知建模系统 2026/9/16 10:44:36

Pentagi:基于Neo4j图谱与AI Agents的攻击链认知建模系统

1. 项目概述:Pentagi 是什么?它解决的不是“渗透测试自动化”,而是“攻击链认知建模”的根本问题 你搜“pentagi”时,首页跳出来的全是 Docker、Neo4j、AI Agents 这些词——但它们只是工具,不是目的。我第一次看到这…

阅读更多 →
DeepSeek V4.1 Flash显存优化部署实战指南 2026/9/16 10:44:36

DeepSeek V4.1 Flash显存优化部署实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Git分支管理实战:从master到feature/hotfix的团队协作方案 2026/9/16 10:41:35

Git分支管理实战:从master到feature/hotfix的团队协作方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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