Avatar ·

在PHP中实现枚举(Enum):如何正确实现?

大家好!我是PHP新手(写了大约一年),遇到了一个问题。项目中需要存储订单状态:"新订单"、"处理中"、"已发货"、"已送达"。目前我使用普通常量: ```php define('STATUS_NEW', 1); define('STATUS_PROCESSING', 2); define('STATUS_SHIPPED', 3); define('STATUS_DELIVERED', 4); ``` 但这很不方便:首先,我可能不小心向函数传递任何数字而不是状态,而PHP不会报错。其次,如果需要为状态添加描述或方法(例如,“是否可以取消订单?”),就必须编写单独的函数。第三,在表单下拉列表中显示状态列表时,我经常混淆键和值。 我听说PHP 8.1中有了原生enum,但项目运行在PHP 7.4上,暂时无法升级。如何在旧版PHP中正确实现枚举?我需要一个可靠的方案,支持类型检查并能够添加方法。感谢提供代码示例! <<>>

正确