Maison > développement back-end > tutoriel php > Demandez la manipulation avec PHP Enum à Laravel

Demandez la manipulation avec PHP Enum à Laravel

Johnathan Smith
Libérer: 2025-03-05 15:33:09
original
902 Les gens l'ont consulté

Request Handling with PHP Enums in Laravel

La gestion améliorée de la demande de Laravel prend désormais directement en charge les énumérations, garantissant la sécurité du type lors du traitement des valeurs énumérées à partir des demandes entrantes. Cette approche rationalisée simplifie la validation des entrées et garantit la cohérence des données pour les ensembles de valeur prédéfinis.

illustrons avec un système de gestion d'abonnement:

use App\Enums\UserRole;
// Basic enum retrieval
$role = $request->enum('role', UserRole::class);
Copier après la connexion

Voici un exemple pratique:

// 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()
        ]);
    }
}
Copier après la connexion

Exemple d'utilisation:

// 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"
}
Copier après la connexion

Cette gestion de la demande basée sur l'énumération offre une méthode robuste et sécurisée pour le traitement des valeurs énumérées, assurant une intégrité des données dans votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal