Yii 依赖注入基础

Yii 依赖注入基础,yii,dependency-injection,dependencies,Yii,Dependency Injection,Dependencies,谁能给我解释一下基本知识吗?我理解它是什么,但我现在真的不知道如何在实践中使用DI容器。例如,我在同一控制器中有两个函数: public function actionIndex() { $productsModel = new Products(); $productsFormModel = new ProductsForm(); $informationFormModel = new InformationForm(); .... } public fun

谁能给我解释一下基本知识吗?我理解它是什么,但我现在真的不知道如何在实践中使用DI容器。例如,我在同一控制器中有两个函数:

public function actionIndex()
{
    $productsModel = new Products();
    $productsFormModel = new ProductsForm();
    $informationFormModel = new InformationForm();

    ....
}

public function actionInformation()
{
    $productsModel = new Products();
    $productsFormModel = new ProductsForm();
    $informationFormModel = new InformationForm();

    ....
}
所以我的两个问题是:

  • 如上所述,我在这些函数中使用相同的模型。将它们初始化为“public function init(){}”,然后在所有类中全局使用它们是一个好主意,还是一个坏主意

  • 我认为如果这些模型被注入到这个控制器中会更好,对吗?如何正确地做

  • 我创建了DI.php文件,并将其包含在输入脚本中。文件内容为:

    <?php
    
    \Yii::$container->set('products_model', 'app\models\Products');
    \Yii::$container->set('products_form', 'app\models\ProductsForm');
    \Yii::$container->set('information_form', 'app\models\InformationForm');
    
    ?>
    
    但这不是个好主意,对吗

    请回答我的两个问题

    谢谢

  • 保存东西总是一个好主意。这些类似乎非常相关,因此我建议通过创建一个新模型(例如,
    ProductsInfo
    )来明确这种关系。可以相应地命名控制器(
    ProductsInfoController
    ),从而澄清应用程序结构

  • 少用依赖注入。如果有不同的方法,请使用该方法。DI不适合描述的用例

  • $instance_products = \Yii::$container->get('products_model');
    $instance_products_form = \Yii::$container->get('products_form');
    $instance_information_form = \Yii::$container->get('information_form');