Maison >développement back-end >tutoriel php >Améliorations de la définition de l'itinéraire dans Laravel avec intégration ENUM

Améliorations de la définition de l'itinéraire dans Laravel avec intégration ENUM

Karen Carpenter
Karen Carpenteroriginal
2025-03-06 02:27:09818parcourir

Route Definition Enhancements in Laravel with Enum Integration

La dernière mise à jour de Laravel améliore les définitions d'itinéraire en intégrant directement avec la fonctionnalité ENUM de PHP. Cela simplifie la configuration de l'itinéraire, éliminant le besoin de récupération de valeur manuelle lors de l'utilisation des énumérations, conduisant à un code plus propre et plus maintenable tout en conservant la sécurité de type.

Maintenant, vous pouvez utiliser de manière transparente les cas d'énumération dans les méthodes de routage de Laravel pour les noms de route et les domaines. Cette approche rationalisée maintient les avantages de la vérification du type d'énumération.

Voici un exemple démontrant l'utilisation des énumérations dans les préfixes de route:

enum RouteSection: string
{
    case Admin = 'admin';
    case Client = 'client';
    case Public = 'public';
}

Route::prefix(RouteSection::Admin)
    ->group(function () {
        // Admin routes
    });

Considérons un scénario d'application multi-portal:

<?php namespace App\Routing;

use App\Http\Controllers\Portal;

enum PortalType: string
{
    case Student = 'student.university.edu';
    case Faculty = 'faculty.university.edu';
    case Admin = 'admin.university.edu';
}

enum PortalSection: string
{
    case Dashboard = 'dashboard';
    case Resources = 'resources';
    case Profile = 'profile';
}

// Route configuration
Route::domain(PortalType::Student)
    ->middleware(['auth', 'student'])
    ->group(function () {
        Route::get('/', [Portal\StudentController::class, 'index'])
            ->name(PortalSection::Dashboard);

        Route::get('/materials', [Portal\ResourceController::class, 'index'])
            ->name(PortalSection::Resources);

        Route::get('/profile', [Portal\ProfileController::class, 'show'])
            ->name(PortalSection::Profile);
});

Route::domain(PortalType::Faculty)
    ->middleware(['auth', 'faculty'])
    ->group(function () {
        // Faculty portal routes using the same enums
        Route::get('/', [Portal\FacultyController::class, 'index'])
            ->name(PortalSection::Dashboard);
    });

Cette prise en charge directe de l'énumération améliore considérablement la lisibilité au code et la maintenabilité, tout en préservant les avantages des énumérations PHP, telles que la sécurité de type et l'amélioration automatique.

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:
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