最近在搞新项目,又要写路由映射,又要维护 Swagger 文档,写着写着火就上来了。
明明代码逻辑就写在那,为啥还要在路由表里抄一遍?为啥改个参数还要去改文档?
于是,我捅咕出了这个玩意儿——Restina Framework。
这不是什么颠覆性的发明,就是个为了让自己少写代码的“偷懒工具”。
1. 我是真的不想写路由表了
以前写代码:
- 写完
UserController.php。 - 去
routes/web.php里再写一遍GET /user -> UserController@index。
现在用 Restina:
你只需要在方法头上贴个标签,它就自动生效了。
#[Route(methods: ['GET'], path: '/demo/getUsers', code: 'demo.getUsers', permission: false, jwt: false, autoRefreshToken: true)]
public function getUsers(int $page = 1, int $limit = 10, string $sort = 'id', string $search = '') { ... }
框架会自动扫描! 扫完就能用。
这叫“代码即路由”。改代码不用去改配置,心里舒坦多了。
2. API 文档?我拒绝手写!
最烦写接口文档。每次改个字段,还得去改注释,那堆 @return\... 看得眼花缭乱。
Restina 直接说:别写了,我看你的注解就行。
“注解即文档”,这波操作是不是很骚?
3. 参数校验太繁琐?一行注释搞定
以前做参数校验,Controller 里一堆 if (empty($name)) ...,全是垃圾代码。
Restina 引入了 rules,直接在注解里写规则:
#[Route(methods: ['GET'], path: '/demo/getUsers', code: 'demo.getUsers', permission: false, jwt: false, autoRefreshToken: true)]
#[Params(field: 'page', title: '页码', type: FieldType::INTEGER, rules: 'min:1|integer|required')]
#[Params(field: 'limit', title: '分页大小', type: FieldType::INTEGER, rules: 'min:1|max:100|integer|required')]
#[Params(field: 'sort', title: '排序字段', type: FieldType::STRING, rules: 'in:id,name,email|optional')]
#[Params(field: 'search', title: '搜索内容', type: FieldType::STRING, rules: 'lengthMax:50|optional')]
public function getUsers(int $page = 1, int $limit = 10, string $sort = 'id', string $search = '') { ... }
不符合规则?直接给你返回 400 错误,连 if 都不用写。
代码里全是核心业务逻辑,看着多清爽。
4. 纯纯的 PHP 8 味儿
这框架我直接锁死 PHP 8.4+。
别问为什么,问就是强类型真香。
用了严格模式,IDE 提示贼准,再也不用担心传个字符串进去当数字用了。代码写得那叫一个安心。
5. 怎么用?快得飞起
不想搞复杂的安装教程,Composer 一条命令搞定:
composer require ivupcn/restina
配一下自动加载,Nginx 指向 public/index.php。
没了,就这么多配置。剩下的时间,都去写业务代码吧。
最后叨叨两句
Restina 没啥宏大的理想,它就是想让你写 API 的时候少受点罪。
restina 使用 Eloquent 的 ORM,再配上这套注解系统,开发速度直接起飞。
代码已经开源(Apache 2.0 协议),不收钱,随便改。
如果你也烦那些繁琐的配置,觉得“能运行的代码才是好代码,少敲键盘才是硬道理”,那就来试试。
GitHub 地址:https://github.com/ivupcn/restina-framework