Dependency injection 如何使用依赖项注入容器将Yii composer插件连接到Yii数据库?

Dependency injection 如何使用依赖项注入容器将Yii composer插件连接到Yii数据库?,dependency-injection,yii2,composer-plugin,Dependency Injection,Yii2,Composer Plugin,呼叫所有的易和作曲家大师!我需要你的帮助:) 我是Yii新手,我正在为一个YI2项目创建一个composer插件,它需要依赖项注入容器来实现这一点。总结一下,我的插件所做的是,一旦通过composer将插件添加到项目中,我想创建一个数据库表 我已经创建了一个composer插件,它还没有做任何事情,可以成功地添加到项目的依赖项中。它具有安装composer插件所需的基本文件(如composer.json和Plugin.php)。当我添加一些代码时,我遇到了几个问题 我的一个问题是我不能上Yii的

呼叫所有的易和作曲家大师!我需要你的帮助:)

我是Yii新手,我正在为一个YI2项目创建一个composer插件,它需要依赖项注入容器来实现这一点。总结一下,我的插件所做的是,一旦通过composer将插件添加到项目中,我想创建一个数据库表

我已经创建了一个composer插件,它还没有做任何事情,可以成功地添加到项目的依赖项中。它具有安装composer插件所需的基本文件(如composer.json和Plugin.php)。当我添加一些代码时,我遇到了几个问题

我的一个问题是我不能上Yii的课。尝试使用“Yii::$app”时出现此错误:

PHP致命错误:在中找不到类“Yii”

所以我猜“使用Yii'不起作用(?)

另一个问题是,当我应用Yii2中所需的代码片段时,我得到以下结果:

PHP致命错误:未捕获的TypeError:参数1传递给 实验\插件::\构造()必须是的实例 yii\db\Connection,未提供任何

我做错了还是错过了什么?我想知道如何解决这个问题,以及使用Yii-composer插件的正确方法。如何将composer插件连接到Yii数据库(任何类型的数据库)

以下代码可能会有所帮助:

composer.json

{
    "name": "rencamp/experiment-component",
    "description": "This is a test package.",
    "type": "composer-plugin",
    "require": {
        "yiisoft/yii2": "^2.0",
        "composer-plugin-api": "^1.0"
    },
    "autoload": {
        "psr-4": {
            "Experiment\\": "src"
        }
    },
    "extra": {
        "class": "Experiment\\Plugin"
    },
    "minimum-stability": "dev"
}
Plugin.php(这在“src”文件夹中)


<?php
namespace Experiment;

use Composer\Composer;
use Composer\IO\IOInterface;
use Composer\Package\Link;
use Composer\Plugin\PluginInterface;

use Yii;
use yii\base\Component;
use yii\base\Object;
use yii\db\Connection;

class Plugin extends Object implements PluginInterface
{

  public function __construct(Connection $db, $config = [])
  {
      $this->db = $db;
      parent::__construct($config);
  }

    /**
     * @param Composer $composer
     * @param IOInterface $io
     */
    public function activate(Composer $composer, IOInterface $io)
    {
        print_r("\n\rActivated.\n\r");
    }

    private function createTable()
    {
      print_r("create table here...\n\r");
    }
}