{"id":19647216,"url":"https://github.com/lovefc/laravel-route-notes","last_synced_at":"2026-01-03T19:39:17.858Z","repository":{"id":64420487,"uuid":"575468469","full_name":"lovefc/laravel-route-notes","owner":"lovefc","description":"Laravel framework extension, native annotation generates route","archived":false,"fork":false,"pushed_at":"2024-08-03T07:34:23.000Z","size":21,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-17T02:08:11.353Z","etag":null,"topics":["annotate","laravel","route-notes"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lovefc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-07T15:25:48.000Z","updated_at":"2024-08-03T07:32:48.000Z","dependencies_parsed_at":"2024-11-11T14:53:33.000Z","dependency_job_id":null,"html_url":"https://github.com/lovefc/laravel-route-notes","commit_stats":{"total_commits":6,"total_committers":1,"mean_commits":6.0,"dds":0.0,"last_synced_commit":"e057d8295dba57f6ab79988dcebd69f54b10a645"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lovefc%2Flaravel-route-notes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lovefc%2Flaravel-route-notes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lovefc%2Flaravel-route-notes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lovefc%2Flaravel-route-notes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lovefc","download_url":"https://codeload.github.com/lovefc/laravel-route-notes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251338637,"owners_count":21573588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["annotate","laravel","route-notes"],"created_at":"2024-11-11T14:42:55.664Z","updated_at":"2026-01-03T19:39:17.825Z","avatar_url":"https://github.com/lovefc.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# laravel-route-notes\nlaravel框架扩展，原生注解生成路由\n优点是直接生成路由文件，不在运行中解析路由，提升效率\n\n中文介绍 | [English](https://github.com/lovefc/laravel-route-notes/blob/master/doc/readme-en.md)\n\n## 使用环境\n* [PHP](https://php.net/) \u003e= 8.0\n\n* [Laravel](https://laravel.com/) \u003e= 9.0\n\n## 如何安装\n直接使用composer进行安装:\n```bash\ncomposer require lovefc/laravel-route-notes:1.0.3\n```\n## 命令使用\n```\nphp artisan notes:route [-p dirname] [-f filename]\n```\n**\\-p** 要生成的控制器目录名称,默认为`app/Http/Controllers/`\n\n**\\-f** 生成的路由文件地址,默认为`route/date(\"Y-m-d-His\").php`\n\n\n\u003e如果不指定控制器目录，默认会扫描app/Http/Controllers/下的所有控制器文件进行生成\n\n## 注解使用\n首先要先在控制器类中标记开启注释功能,这样运行命令才会生成路由\n```\n\u003c?php\nnamespace App\\Http\\Controllers;\nuse App\\Http\\Controllers\\Controller;\nuse App\\Models\\User;\n\n\n#[annotate('true')]\nclass UserController extends Controller\n{\n    #[get('/show')]\n    public function show()\n    {\n        return view('welcome');\n    }\n}\n```\n上面是一个常规的控制器,必须在声明类的上面加上#[annotate('true')],这样才会生成注解。\n可以在类的注解上声明全局的属性,比如:\n\n`#[annotate('true'),prefix('/user')]`\n\n这样下面方法注解就会自动带上前缀,当然你也可以在方法上改变这个前缀。\n\n注解方法的属性跟路由使用基本上一样。\n\n比如:\n\n`#[get('show'),prefix('/user'),middleware('myauth')]`\n\n上面声明的注解最终会生成以下的路由:\n\n`Route::prefix(\"/user\")-\u003epost(\"all\",[userController::class,\"show\"])-\u003emiddleware(\"myauth\");`\n\n除此之外，也支持where正则验证:\n\n`#[get('show/{name}'),where(['name'=\u003e'[a-z]+'])]`\n\n又或者这样:\n\n`#[get('show/{name}'),where('name','[a-z]+')]`\n\n另外你可以在类注解上面声明全局的where属性:\n`\n#[annotate('true'),prefix('/user'),where(['name'=\u003e'[a-z]+'])]`\n\n重定向路由注解案例:\n```\n#[annotate('true')]\nclass MyController extends Controller\n{\n\t#[get('/index')]\n    public function index(Request $request){\n\t\treturn view('welcome');\n\t}\n\t\n\t#[redirect('/','/index')]\n\tpublic function home(){\n\t\t\n\t}\n}\n```\n\n### 分组注解\n\nlaravel-route-notes扩展新增了分组路由支持，先看下面两个控制器\n\n```\n\n\u003c?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\n\n#[annotate('true'),group(['prefix' =\u003e '/home','middleware'=\u003e'auth'])]\nclass MyController extends Controller\n{\n    #[get('/show')]\n    public function show()\n    {\n        echo 'show';\n    }\n\t\n    #[get('/show2')]\n    public function show2()\n    {\n        echo 'show2';\n    }\t\n}\n```\n\nMyController控制器的类注解上加上了一个`group(['prefix' =\u003e '/home','middleware'=\u003e'auth'])`\n\n```\n\u003c?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\n\n#[annotate('true')]\nclass My2Controller extends Controller\n{\n    #[get('/')]\n    public function show()\n    {\n        return view('welcome');\n    }\n\t\n    #[get('/login'),name('login')]\n    public function login()\n    {\n        return view('welcome');\n    }\t\n\t\n    #[get('/show3'),group(['prefix' =\u003e '/home','middleware'=\u003e'auth'])]\n    public function show2()\n    {\n        echo 'show3';\n    }\t\n}\n```\n\nMy2Controller控制器的方法show2上的注解上，同样也有个`group(['prefix' =\u003e '/home','middleware'=\u003e'auth'])`\n\n那么我们看一下最后生成的路由是什么样子的:\n\n```\n\u003c?php\n\nuse Illuminate\\Support\\Facades\\Route;\nuse App\\Http\\Controllers\\My2Controller;\nuse App\\Http\\Controllers\\MyController;\n\nRoute::get(\"/\",[My2Controller::class,\"show\"]);\n\nRoute::get(\"/login\",[My2Controller::class,\"login\"])-\u003ename(\"login\");\n\nRoute::group(['prefix'=\u003e'/home','middleware'=\u003e'auth'],function(){\n\n    Route::get(\"/show3\",[My2Controller::class,\"show2\"]);\n\n    Route::get(\"/show\",[MyController::class,\"show\"]);\n\n    Route::get(\"/show2\",[MyController::class,\"show2\"]);\n\n});\n\n```\n大家可以看到，对于相同命名的路由都会归类到一起。\n\n关于路由分组，其实限制又有不少，因为如果命名了group(['属性'=\u003e'属性值']),那么最好不要再去单独声明相同的属性了。\n\n另外，如果你类注解声明了`group(['prefix' =\u003e '/home']`,那么方法注解里，在声明`prefix('/home2')`,将不会起作用，相同的属性，在分组里面声明并不会生效。\n\n### 类注解属性\n\n关于类注解和方法注解的属性名称如以下所示：\n\n类注解的都是会自动注册到方法注解里面，也可以在方法注解里面覆盖\n\n|   注解类属性(全局属性)  |  方法属性   |\n| --- | --- |\n|  prefix,name,where,domain,middleware,group   |  prefix,name,where,domain,middleware,group,post,get,any,match,options,patch,view,redirect,put,delete    |\n\n\n\u003e属性都要小写,并没有去判断大小写混用\n\n## LICENSE\n\nLaravel-route-notes is released under the MIT license","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flovefc%2Flaravel-route-notes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flovefc%2Flaravel-route-notes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flovefc%2Flaravel-route-notes/lists"}