在开发当中,我们总是想复用代码,降低重复开发的工作。
在yii2开发的过程中,用composer管理依赖,在开发的时候,官方给出的办法是用aliases
定义命名空间的。
假设在 vendor/mycompany/myext 目录中安装了一个扩展,并且扩展类的命名空间为 myext , 那么你可以在应用配置文件中包含如下代码:
[
'aliases' => [
'@myext' => '@vendor/mycompany/myext',
],
]
这种办法很有局限性,如果我们扩展本身也想引用依赖,就很麻烦,需要在项目中单独安装,并不是和这个扩展进行关联。
使用Gii创建扩展的时候,默认生成了composer.json,那我们可以把需要的依赖定义到这个配置文件里。
问题来了,这么定义如何载入并使这个配置生效。 其实很简单,我们在定义repositories(仓库)的时候会有多种模式(如:composer,git,artifact,path等)。
我们只需要在项目的composer.json配置文件中增加对应本地扩展路径的定义即可
{
...
"repositories": {
"0": {
"type": "composer",
"url": "https://asset-packagist.org"
},
"local": {
"type": "path",
"url": "./app/extensions/*/*",
"options": {
"symlink": true
}
},
"packagist": {
"type": "composer",
"url": "https://repo.huaweicloud.com/repository/php/"
}
}
}
为了开发方便,我们安装的时候采用软连接的形式。避免开发的目录与实际运行的目录文件不能同步。
安装需要的扩展
这里需要注意的是,安装的时候版本参数使用dev-master
。
composer require grazio/yii2-adminui:dev-master -vvv
本文由 systemofdown 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。