首頁 > 後端開發 > php教程 > 要求在Laravel中使用PHP枚舉處理

要求在Laravel中使用PHP枚舉處理

Johnathan Smith
發布: 2025-03-05 15:33:09
原創
899 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板