如何解决我应该在Yii2的哪里设置DI容器?
我有一个界面。和一堂课。该类实现接口并扩展BaseObject
。这有点像业务逻辑服务。我将通过构造函数将其注入controllerer中。我的目标是从界面使用依赖。
我正在寻找documentation,但我不知道该在哪里写这段代码。它是主要配置的一部分吗?还是某种新的配置?它是单独的文件吗?如果是,Yii2将如何了解它是DI配置?
解决方法
您可以在应用程序配置中设置DI容器。例如在web.php配置中:
$config = [
// ...
'container' => [
'definitions' => [
\my\namespace\MyInterface::class => \my\namespace\MyClass::class,// ... other definitions
],],// ... other configs
];
设置DI的另一个好地方可能是组件的bootstrap方法。例如在Module类中。
class MyModule extends \yii\base\Module implements \yii\base\BootstrapInterface
{
public function bootstrap($app)
{
Yii::$container->set(
\my\namespace\MyInterface::class,\my\namespace\MyClass::class
);
}
}
在这种情况下,您必须将模块添加到应用的bootstrap
属性中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。