Ale*_*bak 4 dependency-injection yii2
我有一个界面。还有一个班级。该类实现接口并扩展BaseObject。它类似于业务逻辑服务。我将通过构造函数将其注入控制器中。我的目标是使用接口的依赖关系。
我正在查看文档,但我不明白,我应该在哪里编写这段代码。它是主配置的一部分吗?或者这是某种新的配置?是一个单独的文件吗?如果是 yse,Yii2 如何理解它的 DI 配置?
您可以在应用程序配置中设置 DI 容器。例如在 web.php 配置中:
$config = [
// ...
'container' => [
'definitions' => [
\my\namespace\MyInterface::class => \my\namespace\MyClass::class,
// ... other definitions
],
],
// ... other configs
];
Run Code Online (Sandbox Code Playgroud)
设置 DI 的另一个好地方可能是在组件的引导方法中。例如在模块类中。
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
);
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您必须将模块添加到应用程序的bootstrap属性中。
| 归档时间: |
|
| 查看次数: |
2024 次 |
| 最近记录: |