>让我们用订阅管理系统说明:
这是一个实用的例子:
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中文网其他相关文章!