之前教你在 Yii2 中添加全局函数 有分享。
在 composer.json 文件里面添加如下代码:
"autoload": {
"files": [
"common/components/GlobalFunctions.php"
]
},
添加完之后记得用终端在项目根目录下执行 composer dump
命令。
有时候我们通过 Composer 使用第三方类或者框架,遇到一个类不满足我的需求,通常的方法你可能会去修改源码。
但是我非常不推荐这个做法,因为这意味着你在挖坑。这里我分享一个方法:
在 composer.json 文件里面添加如下代码:
"autoload": {
"classmap":[
"common/components/AccessToken.php"
]
},
common/components/AccessToken.php
这个文件是你复制要修改的类文件到 components
文件夹下面。
然后你就可以随便改代码了,这个类的命名空间不需要改,保留之前的。
最后记得用终端在项目根目录下执行 composer dump
命令。
场景:我们使用第三方主题包,比方说是 AdminLTE ,但是这个主题有点坑的地方是它 css 使用的是 Google CDN, Google 我们不翻墙的情况下我们根本使用不了,这么坑,怎么办?不要告诉我你直接去修改源码。
下面我分享一个方法:
在 composer.json 文件里面添加如下代码:
"scripts": {
...
"post-install-cmd": [
"common\\components\\ComposerInstaller::initProject"
],
"post-update-cmd": [
"common\\components\\ComposerInstaller::initProject"
]
...
},
上面命令就是指你使用 composer install
和 composer update
命令最后会执行你配置的这个方法。
至于方法怎么写,要你自己去实现吧,大概就是正则查找替换,程序自动完成,保证不会出错。
比方说团队合作的时候,项目同时安装了一个扩展,但是这个扩展 composer.json 文件限制了要求要 mongodb 的扩展,而此刻等电脑的环境没有安装这个 mongodb,而且我可以本地环境可以不使用此功能,但是我又要安装令一个 composer 的时候就会提示我,这个时候我们可以忽略安装时限制:
$ composer require yiisoft/yii2-mongodb --ignore-platform-reqs
临时解决不想装扩展的问题
$ composer install --ignore-platform-reqs
$ composer show --installed
PS:使用 $ composer show -p
命令可以查看平台软件包(PHP 与它的扩展)。
某些情况下(修改 composer.json 文件但是又不是改变包的情况下)你需要更新 autoloader,例如在你的包中加入了一个新的类。你可以使用 dump-autoload 来完成,而不必执行 install 或 update 命令。
$ composer dump
使用 prestissimo 可以并行安装,加快安装速度。
待续……
希望大家也可以分享一些你的使用 composer 的小技巧。
本文由 echo 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。