一般的 PHP 框架,一个应用 Application ,生命周期大概是这样的: Request > Router / Url > Dispatch > Controller/Action [ > Service] > Model > [ > View] > Response ,当然可能有些差别,多数无外乎这样。
那引入 di 注入的意义是什么呢?是为了把应用流程涉及的对象设计成组件来实现解耦吗?比如 RequestInterface / HttpRequest / CliRequest , RouterInterface / SimpleRouter / RegexRouter / MapRouter 等等这样?
但是一个普通的带视图带数据库操作的请求大致流程大家都一样啊( ROR / J2EE / PHP MVC ),即使是 restful 也是有 Router / Request / ControllerAction / Response 的,这解耦的意义是什么呢?解来解去,还得捞出来组个 MVC 流程。
就好像 Router 妥妥的依赖 Request ,那就手工注入喽? Router 构造函数参数是 RequestInterface $request 喽?当前应用入口决定注入何种 Request 对象喽?难不成哪天 Router 还依赖个奇怪的玩意不成?
难道说仅仅是为了 mock 方便?还是说为了不确定的将来?还是说有其它的原因。。。