PHP Composer 的正确使用姿势

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ChaffererZ/article/details/52640017

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。详细说明文档见Composer 中文文档,本文将列出的是工作中遇到的问题及解决方案。

阿里云2018双11云服务只需99.5元
1核2G内存,¥99.5/年
2核4G内存,¥545.00/1年
2核4G内存,¥927.00/2年
2核4G内存,¥1227.00/3年
2核8G内存,¥2070.00/3年
直达入口:http://t.cn/EZ14u8r


1. 开发过程中,特别是团队协作中,我们经常会遇到的问题是 composer.lock 文件会经常被修改,而且每个人的都会不一样?!

解决这个问题,我们需要的是理解 composer 几个命令之间的区别:

  • composer install

    install 命令是读取 composer.json 内容,处理了依赖关系后,将依赖包安装到 vendor 目录下。需要注意的是,如果说之前已经处理过相应的 composer.json 并已经生成了相应的 composer.lock 文件,那么 composer 会优先选择读取 composer.lock 里的内容来处理,如果未找到相应内容才会从 composer.json 中读取。很明显,这条命令是不会轻易修改 composer.lock文件的。

  • comoser update

    如其名,update 的工作是升级依赖包,它会从 composer.json 入手,对于配置的版本类似 x.x.* 的文件,它会去查找是否有更高的版本,如果有,它会执行更新,并且修改 composer.lock 文件。很明显,这条命令是会经常修改 composer.lock文件的。

如果说,在我们的项目开发过程,如是只想更新某一个依赖包时,就会比较麻烦。当然,你可以每个包都指定具体的版本,但是这对于项目管理也是比较头疼的。

  • composer require

    解决上述问题,这里需要介绍新的命令 composer require ,该命令是可指定单独某一个依赖包进行更新。这也就是说我们可以较小粒度的修改 composer.lock 文件了。

回到问题上,我们为了保持开发人员之间或者说开发人员与线上环境之间的依赖包版本的一致性,我们需要保证的是 composer.lock 文件尽量不被修改,且大部分人员只使用 install 命令,包括线上服务器部署时严格使用 install 命令。如果有需要更新的包,应该由特定人员通过使用 require 命令升级后提交 composer.lock 文件。

综上所述,composer 在项目管理中的正确使用姿势是,特定人员生成(install/update)或者更新(update/require) composer.lock 文件,其他人员只使用(install) composer.lock文件。


2. 在公司各个项目组之间,一定会存在很多通用的功能,那么如何优雅的使用其它项目组给我提供的组件呢?

首先我们能想到的就是我们常用的版本控制管理(vcs)的使用,ok,这样确实是能解决问题的,但是,对于权限控制严格的公司,这,我想应该能算得上是一种灾难了吧。

这里我想到的方法是,能不能用 composer 来管理呢?

答案肯定是可以的,别人都能发布包,我们肯定也可以,但是,如果说特别公用甚至可以公开的包,绝对没问题。可是,要是有公司私密信息的呢???

composer 为我们提供了打包方法 satis 和 proxy 两种,我使用 satis 解决了,请移步至SDK 编写规范及使用方法说明

猜你喜欢

转载自blog.csdn.net/ChaffererZ/article/details/52640017