PHP 枚举:是时候告别老式类常量了
枚举在 PHP 中已经引入两年了,如果您还在使用类常量来表示枚举值,那么是时候切换到 PHP 枚举了。以下是四个令人信服的理由。
1、内置“cases”方法
想象一下,您正在开发一个具有不同用户状态的项目。有些是活跃的,有些是禁止的,还有一些尚未完成注册。以老式的方式,您可以使用类常量处理这些状态,从而产生如下代码:
all方法之所以存在,是因为它满足了一个非常常见的需求:在下拉菜单中显示所有可能的选项。您可以通过创建自己的方法或使用反射来实现这一点。
现在,让我们看看枚举如何简化这一过程:
使用枚举,您可以使用内置的“cases”方法,它会自动返回所有可用选项的数组。告别每次添加新状态时手动更新常用选项列表。
2、类型提示
回到用户状态的示例,让我们考虑一种情况,我们有一种设置用户状态的方法。我们希望只将有效状态存储在数据库中。它通常是这样的:
看起来有点难看。我们有更好的解决方案!
通过类型提示,我们可以确保只有来自 UserStatus 枚举的有效状态值才能传递给方法参数。这可以消除潜在的错误,例如使用无效状态值引起的问题。
3、枚举方法
我将继续使用带有用户状态的示例。假设有些人可以登录系统,有些人则不能。
老式的方式:
使用枚举:
虽然它不是“游戏规则改变者”,但它确实可以使代码更简洁、更紧凑。
4、独特性
这个与本主文的第二点略有重叠,但我想单独强调一下。
想象一下,我们不仅有用户的状态,还有我们在线商店中商品的状态。
让我们从前面的示例中获取一段代码,并以不当的方式使用它。
虽然我们不会收到错误,但这可能是一个潜在的问题。如果将来我们更改 ProductStatus::ACTIVE 常量的值,我们可能会在这里收到错误。
那么枚举呢?枚举是唯一的。
即使 UserStatus::ACTIVE 和 ProductStatus::ACTIVE 具有相同的值,它也是不同的项目。我们可以轻松地手动检查。
这意味着类型提示对我们有双重帮助——它不允许使用不正确的值,也不允许使用这些值的不正确来源,即使它们看起来合适。
评论 (0)