【问题标题】:Dependency Injection of optional user components可选用户组件的依赖注入
【发布时间】:2011-11-23 22:31:39
【问题描述】:

我一直在尝试构建我自己的 PHP MVC 框架,纯粹是作为一个教育练习,我想要一些关于如何最好地处理/设计框架以支持可选用户组件的依赖注入的输入。

例如,有一个“核心”框架配置对象,然后,在应用程序文件夹下,用户可以在需要时指定自己的应用程序配置文件/对象。

我没有在特定的控制器中创建核心配置对象,而是将核心配置对象注入到控制器中,因为这将使测试更容易(并遵循依赖注入的原则)。

这一切都很好,也很有意义,但是应用程序配置对象会发生什么?用户可以使用该框架并且永远不需要特定于应用程序的配置对象/文件,因此为每个控制器注入特定于应用程序的配置对象似乎效率低下并且浪费(资源)。

所以基本上我要问的是如何支持用户可能需要或不需要的组件的依赖注入?

请记住,我对依赖注入和 TDD 的想法很陌生,所以我猜上面的问题有一个非常简单的解决方案,但我还没有从所有文章中偶然发现它我读了。

我以为我在http://misko.hevery.com/2008/08/21/where-have-all-the-singletons-gone/Misko Hevery 这篇文章中找到了答案,但我认为工厂并没有解决可选用户组件的问题。

【问题讨论】:

    标签: php model-view-controller dependency-injection


    【解决方案1】:

    如果我理解正确的话,困扰你的是注入可能最终不会被使用的对象。

    这可以通过使用 lazy-injection 来解决,即注入一个空的代理对象,只有在使用时才会加载“真实”对象。

    PHP-DI 支持例如:

    class Class1 {
        /**
         * @Inject(lazy=true)
         * @var Class2
         */
         private $class2;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 2016-09-10
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多