首页 > 后端开发 > php教程 > 要求在Laravel中使用PHP枚举处理

要求在Laravel中使用PHP枚举处理

Johnathan Smith
发布: 2025-03-05 15:33:09
原创
900 人浏览过

Request Handling with PHP Enums in Laravel

Laravel的增强请求处理现在直接支持枚举,从而确保从传入请求进行枚举值时确保键入安全性。这种简化的方法简化了输入验证并保证了预定义值集的数据一致性。

>让我们用订阅管理系统说明:

这是一个实用的例子:
use App\Enums\UserRole;
// Basic enum retrieval
$role = $request->enum('role', UserRole::class);
登录后复制

>用法示例:
// app/Enums/SubscriptionTier.php
<?php namespace App\Enums;

enum SubscriptionTier: string
{
    case FREE = 'free';
    case BASIC = 'basic';
    case PRO = 'pro';
    case ENTERPRISE = 'enterprise';

    public function getMonthlyLimit(): int
    {
        return match($this) {
            self::FREE => 1000,
            self::BASIC => 5000,
            self::PRO => 20000,
            self::ENTERPRISE => 100000
        };
    }
}

// app/Controllers/AccountController.php
namespace App\Http\Controllers;

use App\Enums\SubscriptionTier;
use App\Models\Account;
use Illuminate\Http\Request;

class AccountController extends Controller
{
    public function updateSubscription(Request $request, Account $account)
    {
        $newTier = $request->enum('tier', SubscriptionTier::class);
        if (!$newTier) {
            return response()->json([
                'error' => 'Invalid subscription tier provided'
            ], 422);
        }
        $account->update([
            'subscription_tier' => $newTier,
            'monthly_limit' => $newTier->getMonthlyLimit(),
            'upgraded_at' => now()
        ]);

        return response()->json([
            'message' => 'Subscription updated successfully',
            'account' => $account->fresh()
        ]);
    }
}
登录后复制

这个基于枚举的请求处理提供了一种可靠的,类型的安全方法,用于处理枚举值,确保您的应用程序中的数据完整性。
// Valid request
{
    "tier": "pro"
}

// Successful response
{
    "message": "Subscription updated successfully",
    "account": {
        "id": 1,
        "subscription_tier": "pro",
        "monthly_limit": 20000,
        "upgraded_at": "2024-02-01T10:30:00.000000Z"
    }
}

// Invalid request
{
    "tier": "premium"  // Non-existent tier
}

// Error response
{
    "error": "Invalid subscription tier provided"
}
登录后复制

以上是要求在Laravel中使用PHP枚举处理的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板