如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

composer作为php的包管理工具,在企业级别的代码中,应用越来越广泛。不过,在php的世界里面,离开了composer并不是寸步难行的。毕竟,在以前的php世界里面,是不存在composer的。但是node离开了npm,恐怕是后果不堪设想。本文的主题是:composer如何升级某个扩展包。苏南大叔给出点自己的相关理解。

composer.lock 文件

首先,苏南大叔先讲述一下前置内容:composer.lock文件。

composer.lock文件存在于项目根目录下面,是composer install的产物。由于一般大家的版本号写的都比较宽泛,所以不同的人composer install的最终结果,可能有较大区别。特别是随着时间的推移,很可能composer install初始化的项目,变得不是那么可靠了。

所以,这个时候,composer.lock文件就有其存在的意义。composer install命令会先遵照composer.lock中的版本(也就是说是某个特定的版本号),然后在查找composer.json 安装最新扩展包和依赖(也就是说,版本号可能存在跳跃性了)。那么多成员协作编写php项目的时候,为了保证版本的一致性,比较好的方案是:

  • composer.lock文件提交到版本库,其它人执行composer install
  • 或者把vendor目录也提交到版本库,其它人不用执行任何composer命令。

composer如何升级vendor扩展包 - compser结构图

composer update命令

看完了上述有关composer.lock文件的内容后,这里讲述composer update命令。

在这里,苏南大叔提示您:这个命令一定一定要谨慎执行。因为:这个命令会带来vendor包版本的更新,增加项目的不确定性。当然,如果您的项目代码(包括composer.lock,composer.json,vendor/*),都加入了git或者svn版本库管理功能的话,倒也没有特别可惊慌的,毕竟可以随时回滚的嘛。

composer update的命令,从 composer.json 安装最新扩展包和依赖。主要有两种情况。如下:

  • composer update, 更新composer.json 中的全部包。
  • composer update vendor/package,只更新特定vendor包最新。

下图是苏南大叔,更新了overtrue大神的easywechat包的截图。

composer update overtrue/easywechat

composer如何升级vendor扩展包 - composer_update

注意:composer update会遵守composer.json中的版本约定,并不会跨大的版本号更新。比如,苏南大叔下载更新到的easywechat实际上版本号是3.3.2。而实际上easywechat版本号已经更新到4.0系列。也就是说,不更新composer.json,但是会更新composer.lock

composer dump-autoload命令

一般来说,update某个包的话,不会导致class not found的情况发生。但是,这里还是留着一手备用的。那就是composer dump-autoload命令,它可以更新识别vendor目录下面的所有新的扩展包。

composer dump-autoload

composer info命令

composer update <vendor/pageage>

可以查看你安装的某个扩展包的具体信息。例如:下面这条就是苏南大叔,查看本地安装的easywechat包信息的例子。

composer info overtrue/easywechat

composer如何升级vendor扩展包 - composer_update3

结论

composer管理器,偶尔用一下,并不像npm那么使用频繁。更多composer的经验文章,苏南大叔提示您:请点击这里查看:https://newsn.net/tag/composer/

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。