您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

在 Laravel 使用枚举

2025/12/8 20:42:32发布10次查看
我是 enums 的忠实粉丝最近,我在一家使用 c# 的公司工作,那里广泛使用 enum,我已经习惯了在找不到它们的时候,能够找到它们,并想念它们。
我将它们用于任何具有有限一组可能选项的事情,例如一周中的几天、订单的状态,或者,如下面的示例中所示,用户类型。
使用枚举有几个好处:
- 减少因转置或错误输入数字而导致的错误。
- 使将来改变价值观变得容易。
- 使代码更易于阅读,这意味着不太可能有错误潜入其中。
- 确保前向兼容性使用枚举时,如果将来有人更改与成员名称对应的值,可以大大降低你的代码失败几率。
php 本身并不支持枚举,但是使用类中的常量相当容易实现等价的效果。 此外,我还创建了一个名为 laravel-enum 的 laravel 包。 它允许你访问帮助函数,例如列出键和值,将描述附加到值上,以及验证期望枚举值的请求。
本指南逐步介绍了安装的过程 laravel package 包括用法和最佳实践的示例。
安装包
可以通过 composer 在终端中运以下命令来安装包:
$ composer require bensampo/laravel-enum
如果你使用的是低于 5.5 的 laravel 版本,你需要将服务提供者添加到 config/app.php.
'bensampo\enum\enumserviceprovider'
创建第一个枚举
我们将为用户类型创建一个枚举在我们的示例应用程序中,用户可以属于以下三种用户类型之一:管理员、付费成员、成员。
包中包含用于创建枚举的生成器,因此可以运行以下命令来创建名为 usertype 的枚举该文件将在 “app/enums/usertype.php” 中创建
php artisan make:enum usertype
你将在这个文件中看到一定数量的脚手架。在文件顶部附近,可能的选项列表被定义为常量。这些常量值存储在数据库中,因此我发现最好是使用整数,但是并没有限制一定要使用整数,只要每一个值都是唯一就可以了了。
本例中的选项看起来是这样的:
const administrator = 0;const paidmember = 1;const member = 2;
把值存储在数据库中
现在我们有了一个带有一些可能性的枚举,并且可以开始使用它。在迁移 user 表时,可以添加以下内容。
$table->tinyinteger('type')->unsigned()->default(usertype::member);
因为 null 不是枚举的选项,我们需要为它设置默认值。在这个例子中,有必要去假设默认情况下的用户将成为标准成员。
确保文件的顶部包含此枚举的 use 语句。
use app\enums\usertype;
在操作中使用枚举
由于我们现在的用户模型具有类型的属性,我们可以对它进行访问,并和 enum 值进行比较。这就是枚举真正的好处,也是我为什么如此喜欢他们。看一下下面的用法示例和可能替代的方法。
if ($user->type === usertype::paidmember) { // 在这里只是做一些付费会员的事情.}
如果我们不使用枚举,可能会有类似以下的代码:
if ($user->type === 1) { // 这个1表示什么    // ...}if ($user->type === 'paidmember') { // 这他妈咋么又是字符串 
以上就是在 laravel 使用枚举的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product