我应该将依赖注入容器(DIC)作为参数传递给MVC吗?

use*_*914 14 php dependencies containers code-injection

我目前正在编写自己的MVC框架用于学习目的,我决定使用依赖注入容器来共享类之间的常用对象(例如数据库实例).

我在我的bootstrap文件中初始化了容器,我在我的Application类中有一个实例,在路由过程中传递容器实例是一个好习惯吗?(即将容器对象作为ControllerBase构造函数中的参数传递).另外,接受容器作为我的构造函数中的参数是一种好习惯ModelBase吗?

Mar*_*ten 1

听起来依赖注入器与您正在做的事情不同。它听起来更像是一个 ServiceLocator、一个存储库或其他什么。通常,依赖注入器位于调用之间(如果将其用于参数注入)或创建之间(如果将其用于字段或构造函数注入)。

依赖注入器的使用对于被注入的代码/对象必须是完全透明的。所以如果你传递了一个引用,你就做错了。

此外,DependencyInjector 也属于您的代码运行的环境。看到它本来的样子。除非您将应用程序用作运行的框架,否则应用程序甚至不应该知道依赖项注入器。

因此,让依赖注入工作意味着在实际应用程序中不引用注入器。目标是通过注入或不注入两种方式运行应用程序。期间。