Rumah >pembangunan bahagian belakang >tutorial php >Meminta pengendalian dengan php enums di laravel

Meminta pengendalian dengan php enums di laravel

Johnathan Smith
Johnathan Smithasal
2025-03-05 15:33:09902semak imbas

Request Handling with PHP Enums in Laravel

Pengendalian permintaan yang dipertingkatkan Laravel kini secara langsung menyokong enum, memastikan keselamatan jenis apabila memproses nilai yang disebutkan dari permintaan masuk. Pendekatan yang diperkemas ini memudahkan pengesahan input dan menjamin konsistensi data untuk set nilai yang telah ditetapkan.

mari kita ilustrasikan dengan sistem pengurusan langganan:

use App\Enums\UserRole;
// Basic enum retrieval
$role = $request->enum('role', UserRole::class);
inilah contoh praktikal:

// 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()
        ]);
    }
}
Contoh Penggunaan:

// 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"
}
Pengendalian permintaan berasaskan enum ini menawarkan kaedah yang kukuh, jenis selamat untuk memproses nilai yang disebutkan, memastikan integriti data dalam aplikasi anda.

Atas ialah kandungan terperinci Meminta pengendalian dengan php enums di laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn