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 App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\User; #[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包里的说明文档,赶快来试一试吧!