致电所有Yii和Composer大师!我需要你的帮助:))
我是Yii的新手,我正在为Yii2项目创建一个作曲家插件,它需要依赖注入容器来完成这项工作。总结我的插件所做的是,一旦插件通过composer添加到项目中,我想创建一个数据库表。
我已经创建了一个还没有做任何事情的composer-plugin,可以成功地添加到项目的依赖项中。它具有安装composer插件所需的基本文件(如composer.json和Plugin.php)。当我添加一些代码时,我遇到了一些问题。
我的一个问题是我无法到达Yii的课程。当我尝试使用'Yii :: $ app'时出现此错误:
PHP致命错误:在......中找不到“Yii”类
所以我猜'使用Yii; '不起作用(?)
另一个问题是当我应用Yii2的documentation所需的片段时,我明白了:
PHP致命错误:未捕获TypeError:参数1传递给 Experiment \ Plugin :: __ construct()必须是。的实例 yii \ db \ Connection,没有给出
我做错了还是我错过了什么?我想知道如何解决这个问题,以及正确的做Yii作曲家插件的方法。如何将作曲家插件连接到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");
}
}
非常感谢你的帮助!