laravel9-原生注解路由插件

laravel9-原生注解路由插件

laravel-route-notes

laravel框架扩展,原生注解生成路由

优点是直接生成路由文件,不在运行中解析路由,提升效率

使用环境

[PHP] >= 8.0

[Laravel] >= 9.0

如何安装

直接使用composer进行安装:

composer require --dev lovefc/laravel-route-notes

 命令使用

php artisan notes:route [-p dirname] [-f filename]

-p 要生成的控制器目录名称,默认为`app/Http/Controllers/`

-f 生成的路由文件地址,默认为`route/date("Y-m-d-His").php`

如果不指定控制器目录,默认会扫描app/Http/Controllers/下的所有控制器文件进行生成

注解使用

首先要先在控制器类中标记开启注释功能,这样运行命令才会生成路由

<?php
namespace AppHttpControllers;
use AppHttpControllersController;
use AppModelsUser;


#[annotate("true")]
class UserController extends Controller
{
    #[get("/show")]
    public function show()
    {
        return view("welcome");
    }
}

上面是一个常规的控制器,必须在声明类的上面加上#[annotate("true")],这样才会生成注解。

可以在类的注解上声明全局的属性,比如:

#[annotate("true"),prefix("/user")]

这样下面方法注解就会自动带上前缀,当然你也可以在方法上改变这个前缀。

注解方法的属性跟路由使用基本上一样。

比如:

#[get("show"),prefix("/user"),middleware("myauth")]

上面声明的注解最终会生成以下的路由:

#Route::prefix("/user")->post("all",[userController::class,"show"])->middleware("myauth");

除此之外,也支持where正则验证:

#[get("show/{name}"),where(["name"=>"[a-z]+"])]

又或者这样:

#[get("show/{name}"),where("name","[a-z]+")]

另外你可以在类注解上面声明全局的where属性:

#[annotate("true"),prefix("/user"),where(["name"=>"[a-z]+"])]

重定向路由注解案例:

#[annotate("true")]
class MyController extends Controller
{
    #[get("/index")]
    public function index(Request $request){
        return view("welcome");
    }
    
    #[redirect("/","/index")]
    public function home(){
        
    }
}

关于类注解和方法注解的属性名称如以下所示:

类注解的都是会自动注册到方法注解里面,也可以在方法注解里面覆盖。

更多说明,请阅读composer包里的说明文档,赶快来试一试吧!

原文地址:https://www.cnblogs.com/lovefc/archive/2022/12/08/16965788.html