要不全用注解路由得了

aphper

自动路由面对复制的目录结构时无能为力
把路由写在一个文件性能又不好,webman既然已经常驻内存了,不如最低版本要求提高到php8,加上注解路由,框架启动时读取app目录下的所有控制器,把注释路由缓存起来,每次访问都只需要读取缓存,这样写业务的时候直接在方法上面的注解里设置路由、中间件这些玩意 不需要再去改路由文件之类的

<?php

class TestController
{

    #[ Method("GET", "POST") ]
    #[ Url("/article/create") ]
    function create() {
        #...
        return view('...');
    }

}
2092 8 1
8个回答

aphper

这个自己也可以实现 不过集成在框架里应该更好

FPM模式下整注解,要把所有控制器读取一遍,从性能考虑,使用注解路由模式不现实

常驻内存的应用 感觉单独整一个route.php有点脱裤子放屁了,webman完全可以有一套自己的玩法

  • nitron 2022-03-18

    route.php可以启动时直接加载, 注解启动时需要遍历+反射再生成

    别忘了还有对应的分组,中间件注册

  • liziyu 2022-03-18

    都常驻内存了,都写在一个route.php里没什么性能影响了吧。

  • aphper 2022-03-19

    没什么影响但是不方便啊 直接写在方法里不顺手多了 就想springboot一样

  • nitron 2022-03-19

    主要是管理起来比较麻烦,看路由还要一个一个文件去找,多人开发会很痛苦

walkor

没有路由写到一个文件性能不好的说法哈。

单独路由配置文件有很大优势,路由集中管理,有哪些路由看起来很直观,修改维护也非常方便。

webman本身有默认路由,大部分情况下默认路由就够用了,少数几个路由在路由配置里定制下就完事了。不需要每个控制器去配置路由。

注解路由也是一直想支持的功能,包括注解中间件、缓存等。但是这些不是非常必要功能,我更倾向与通过插件来实现,有需要注解路由的就安装插件,不需要的就不装。

如果谁想实现注解路由欢迎给webman/auto-route发pr(注意判断下如果低于php8就不执行注解路由逻辑)。注解路由放到auto-route插件非常合适。

  • liziyu 2022-03-18

    个人觉得写在一个 route.php里非便方便,建议目前这种就行了!

  • owenzhang 2022-08-22

    单独路由配置文件有很大优势,路由集中管理,有哪些路由看起来很直观,修改维护也非常方便。+1

  • smart 2022-08-22

    单独路由配置文件有很大优势,路由集中管理,有哪些路由看起来很直观,修改维护也非常方便。+2

  • Gin 2022-08-22

    +1

  • powerbowen 2022-11-10

    +1

  • oscar 2022-11-15

    我还是喜欢单独配置管理,找起来方便啊。

Tinywan

从来不用注解的路过,不要动不动就8.0。route.php 单独路由配置文件是最好的

  • 暂无评论
楚羽幽

使用注解路由的确是方便,但后期维护起来,有时候就有点难找,如果项目大的话

  • 北月 2022-03-21

    注解路由,然后生成缓存文件 route.php 不也一样?

  • duxiujun 2022-08-22

    问题是有多少人用php 8.,统计下再说话,7.版本目前是主流

hongshao

可以用swagger实现,并不一定要用php8

  • 暂无评论
pangman

我遇到的问题是: 项目有很多渠道, 每次添加一个渠道就要添加一个sdk代码文件, 然后再去route.php添加路由,感觉是有点麻烦,如果用默认的路由,又不能自定义类似 /api/v1的格式

powerbowen

默认路由完全够用,但是中间件只能够精确到应用
如果想灵活使用中间件的话就在路由配置里改
使用注解的话调整的时候比较麻烦,不够集中化管理,不推荐继承到项目中,如果自己想用可以自己加

默认路由多应用图如下
截图
截图
截图

hongshao

建议自己写个command,把注解生成路由到route.php,或者做成组件,按需加载

  • 暂无评论
年代过于久远,无法发表回答
🔝