https://github.com/lovefc/laravel-route-notes
Laravel framework extension, native annotation generates route
https://github.com/lovefc/laravel-route-notes
annotate laravel route-notes
Last synced: 8 days ago
JSON representation
Laravel framework extension, native annotation generates route
- Host: GitHub
- URL: https://github.com/lovefc/laravel-route-notes
- Owner: lovefc
- License: mit
- Created: 2022-12-07T15:25:48.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-08-03T07:34:23.000Z (9 months ago)
- Last Synced: 2025-03-17T02:08:11.353Z (about 2 months ago)
- Topics: annotate, laravel, route-notes
- Language: PHP
- Homepage:
- Size: 20.5 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# laravel-route-notes
laravel框架扩展,原生注解生成路由
优点是直接生成路由文件,不在运行中解析路由,提升效率中文介绍 | [English](https://github.com/lovefc/laravel-route-notes/blob/master/doc/readme-en.md)
## 使用环境
* [PHP](https://php.net/) >= 8.0* [Laravel](https://laravel.com/) >= 9.0
## 如何安装
直接使用composer进行安装:
```bash
composer require lovefc/laravel-route-notes:1.0.3
```
## 命令使用
```
php artisan notes:route [-p dirname] [-f filename]
```
**\-p** 要生成的控制器目录名称,默认为`app/Http/Controllers/`**\-f** 生成的路由文件地址,默认为`route/date("Y-m-d-His").php`
>如果不指定控制器目录,默认会扫描app/Http/Controllers/下的所有控制器文件进行生成
## 注解使用
首先要先在控制器类中标记开启注释功能,这样运行命令才会生成路由
```
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(){
}
}
```### 分组注解
laravel-route-notes扩展新增了分组路由支持,先看下面两个控制器
```
'/home','middleware'=>'auth'])]
class MyController extends Controller
{
#[get('/show')]
public function show()
{
echo 'show';
}
#[get('/show2')]
public function show2()
{
echo 'show2';
}
}
```MyController控制器的类注解上加上了一个`group(['prefix' => '/home','middleware'=>'auth'])`
```
'/home','middleware'=>'auth'])]
public function show2()
{
echo 'show3';
}
}
```My2Controller控制器的方法show2上的注解上,同样也有个`group(['prefix' => '/home','middleware'=>'auth'])`
那么我们看一下最后生成的路由是什么样子的:
```
name("login");Route::group(['prefix'=>'/home','middleware'=>'auth'],function(){
Route::get("/show3",[My2Controller::class,"show2"]);
Route::get("/show",[MyController::class,"show"]);
Route::get("/show2",[MyController::class,"show2"]);
});
```
大家可以看到,对于相同命名的路由都会归类到一起。关于路由分组,其实限制又有不少,因为如果命名了group(['属性'=>'属性值']),那么最好不要再去单独声明相同的属性了。
另外,如果你类注解声明了`group(['prefix' => '/home']`,那么方法注解里,在声明`prefix('/home2')`,将不会起作用,相同的属性,在分组里面声明并不会生效。
### 类注解属性
关于类注解和方法注解的属性名称如以下所示:
类注解的都是会自动注册到方法注解里面,也可以在方法注解里面覆盖
| 注解类属性(全局属性) | 方法属性 |
| --- | --- |
| prefix,name,where,domain,middleware,group | prefix,name,where,domain,middleware,group,post,get,any,match,options,patch,view,redirect,put,delete |>属性都要小写,并没有去判断大小写混用
## LICENSE
Laravel-route-notes is released under the MIT license