承接 kaye/routing 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

kaye/routing

Composer 安装命令:

composer require kaye/routing

包简介

Route attributes for Laravel

README 文档

README

Un package Laravel permettant de définir les routes directement dans les contrôleurs via des PHP Attributes (#[Get], #[Post], etc.), sans utiliser routes/web.php ou routes/api.php.

Installation

Installe le package via Composer :

composer require kaye/routing

Configuration

Le service provider est auto-enregistré grâce à l'auto-discovery de Laravel.

Si nécessaire, ajoute-le manuellement dans config/app.php :

'providers' => [
    // ...
    RouteAttributes\RouteAttributesServiceProvider::class,
],

Utilisation

Exemple simple

use RouteAttributes\Attributes\Get;
use RouteAttributes\Attributes\Post;

class UserController extends Controller
{
    #[Get('/users', name: 'users.index')]
    public function index()
    {
        return response()->json(['users']);
    }

    #[Post('/users', name: 'users.store')]
    public function store()
    {
        return response()->json(['created']);
    }
}

Préfixe de route

Utilise #[Prefix] pour définir un préfixe commun pour toutes les routes d'un contrôleur :

use RouteAttributes\Attributes\Get;
use RouteAttributes\Attributes\Post;
use RouteAttributes\Attributes\Prefix;

#[Prefix('/api/v1')]
class UserController extends Controller
{
    #[Get('/users')]  // Route: /api/v1/users
    public function index() {}

    #[Post('/users')] // Route: /api/v1/users
    public function store() {}
}

Le préfixe peut également être défini au niveau de la méthode :

use RouteAttributes\Attributes\Get;
use RouteAttributes\Attributes\Prefix;

class UserController extends Controller
{
    #[Get('/profile')]
    #[Prefix('/api')]  // Priorité sur le préfixe de classe
    public function profile() {} // Route: /api/profile
}

Middleware

Utilise #[Middleware] pour assigner des middlewares à vos routes :

use RouteAttributes\Attributes\Get;
use RouteAttributes\Attributes\Post;
use RouteAttributes\Attributes\Middleware;

class UserController extends Controller
{
    #[Get('/users')]
    #[Middleware('auth')]  // Middleware unique
    public function index() {}

    #[Post('/users')]
    #[Middleware(['auth', 'throttle:60,1'])]  // Multiples middlewares
    public function store() {}
}

Combinaison de Préfixe et Middleware

use RouteAttributes\Attributes\Get;
use RouteAttributes\Attributes\Post;
use RouteAttributes\Attributes\Prefix;
use RouteAttributes\Attributes\Middleware;

#[Prefix('/api/v1')]
#[Middleware('auth')]
class UserController extends Controller
{
    #[Get('/users')]  // Route: /api/v1/users, Middleware: auth
    public function index() {}

    #[Post('/users')] // Route: /api/v1/users, Middleware: auth
    public function store() {}

    #[Get('/public')]
    #[Middleware('throttle:60,1')]  // Surcharge du middleware
    public function publicEndpoint() {} // Route: /api/v1/public, Middleware: throttle:60,1
}

Routes disponibles

Méthode Attribut Exemple
GET #[Get] #[Get('/users')]
POST #[Post] #[Post('/users')]
PUT #[Put] #[Put('/users/{id}')]
PATCH #[Patch] #[Patch('/users/{id}')]
DELETE #[Delete] #[Delete('/users/{id}')]

Attributs supplémentaires

Attribut Cible Exemple
#[Prefix] Classe/Méthode #[Prefix('/api/v1')]
#[Middleware] Classe/Méthode #[Middleware('auth')] ou #[Middleware(['auth', 'throttle'])]

Exemple complet

use RouteAttributes\Attributes\Get;
use RouteAttributes\Attributes\Post;
use RouteAttributes\Attributes\Put;
use RouteAttributes\Attributes\Delete;
use RouteAttributes\Attributes\Prefix;
use RouteAttributes\Attributes\Middleware;

#[Prefix('/api/v1')]
#[Middleware('auth:api')]
class ProductController extends Controller
{
    #[Get('/products')]
    public function index() {}

    #[Get('/products/{id}')]
    public function show($id) {}

    #[Post('/products')]
    #[Middleware('throttle:10,1')]  // Limité à 10 requêtes par minute
    public function store() {}

    #[Put('/products/{id}')]
    public function update($id) {}

    #[Delete('/products/{id}')]
    public function destroy($id) {}
}

Comment ça fonctionne ?

Ce package :

  1. Scanne les contrôleurs Laravel
  2. Lit les PHP Attributes
  3. Enregistre automatiquement les routes via Route::get(), Route::post(), etc.
  4. Applique les préfixes et middlewares définis

Avantages

✔ Plus besoin de routes/api.php ou routes/web.php
✔ Code plus propre et centralisé
✔ Préfixes et middlewares directement dans le contrôleur
✔ Inspiré des frameworks modernes (Symfony, NestJS)
✔ Compatible Laravel 10+
✔ Support PHP 8.0+

Limitations

  • Les routes sont chargées au boot de l'application
  • Peut nécessiter un cache optimisé pour les gros projets
  • Nécessite PHP 8.0 ou supérieur

Contribution

Les PR sont les bienvenues !

  1. Fork le projet
  2. Crée une branche feature/ma-feature
  3. Commit tes changements
  4. Ouvre une Pull Request

License

MIT License - voir le fichier LICENSE pour plus de détails.

Support

Si ce projet t'aide, n'hésite pas à mettre une star sur GitHub !

Made with pour la communauté Laravel


**Résumé des ajouts :**

1.  **Section Préfixe** - Documentation complète avec exemples
2.  **Section Middleware** - Documentation complète avec exemples
3.  **Section Combinaison** - Exemple d'utilisation simultanée
4.  **Tableau des attributs supplémentaires** - Vue d'ensemble rapide
5.  **Exemple complet enrichi** - Avec middlewares et préfixes
6.  **Roadmap mise à jour** - Fonctionnalités cochées
7.  **Explications améliorées** - Ajout de l'application des préfixes/middlewares

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-01

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固