插件开发中是否应该注册路由
问题的产生#
我在写一个 Laravel 的插件,想注册一个路由,然后将插件中的控制器注册进去。但问题是,控制器中要用到的一个变量,我不想写死在插件里,我希望能在在使用插件时自定义这个变量的初始化逻辑,我考虑的方案是:
- 在配置文件中初始化,插件中使用 config 辅助函数获取变量,但配置文件中无法写复杂的逻辑,配置文件中使用闭包则会让配置缓存失效;
- 不进行路由注册,而是将路由拷贝到项目路径,使用中间件初始化这个变量,但框架貌似没有直接获取路由文件路径的方法,我觉得使用 app_path 辅助函数拼上相对路径的方式很容易弄错;
- 复制插件中的控制器到项目路径,这样做的缺点是,一旦用户更改了控制器的命名空间,插件中的路由配置将失效;
- 在配置文件中使用数组方式写入静态调用的 callable 类型配置,用于初始化变量,插件中的控制器使用 is_callable 进行判断,我觉得这是比较可行的方案,但感觉不太优雅。
大家平时怎么做?还请不吝赐教。
推荐文章: