【PHP】Composer 的基本使用以及存在价值的理解

Composer 的起源

Composer 是一款 服务于 PHP 生态系统的安装包依赖管理工具,由 Jordi BoggianoNils Aderman 创造,该工具基于命令行操作,所以不喜欢命令行的人还是需要时间适应的。

Composer 的意义

PHP 发展多年,产生了很多优秀的轮子,对于生产都有着很大的帮助,成为了项目中不可或缺的存在。而引入管理这些第三方类库,在早期完全是 zip 下载,解压到目录中,再进行命名空间的引入使用,团队之间也是通过包的复制粘贴文件来达到使用相同的类库,并且不同类库之间还会存在依赖关系,如果当前类库依赖的另一方类库不存在就无法运行,在引入类库的数量达到很多时,类库管理版本升级就会造成很大的困扰,不好进行统一,Composer 的出现解决了这些问题,它会根据配置文件自动加载类库,以及类库的依赖,并配置自动引入,方便更新当前类库的版本,一切只需要简单的配置和命令行的操作。

Composer 的安装

  • Windows 环境下的安装
    1.下载并运行 Composer-Setup.exe,Composer 的安装过程需要依赖网络,虽说梯子不是必备品,但安装时还是尽量配置,以免第一步就放弃了。

    composer-install.png

    2.面板操作基本一键式,唯一需要选择的是指定 当前运行的PHP版本 的安装目录。
    这里对PHP版本说明下:新手开发PHP,多数人是在 windows 里用类似 phpstudy 等集成环境来配置项目的,这种集成环境安装时,预先已经安装了多个 PHP 版本,我们需要知道当前系统默认运行的 PHP 版本,然后在安装 composer 时才能知道选择的 PHP 版本是什么。

  • 全局环境配置
    这里介绍两种配置全局环境的方法,全局的好处就是,无论在系统中的任何地方都可以直接通过命令行输入 composer 指令,无需再输入 php composer.phar
    1.在 PHP 安装目录下,如果安装成功,PHP 根目录下已存在文件 composer.phar ,新建文件 composer.bat 并键入已下代码保存

@php %~dp0composer.phar %*

打开命令行输入命令 composer -v,如出现已下提示,说明 Composer 安装并配置成功

composer_line

2.打开电脑系统环境变量配置,选择系统环境,修改PATH,将 Composer 文件执行路径放入并保存

Composer 的基本使用

  • 包的安装
    对需要安装依赖的项目,在当前目录下建立 composer.json 文件, 文件采用 json 语法格式,例子如下:
{
    "require": {
        "monolog/monolog": "1.0.*" #require 包含的是名称:供应商名称/包名称
    }
}

在拥有 composer.json 文件的目录下,打开命令行输入以下代码,Composer 将开始自动下载所需要的依赖

composer install

在依赖安装后,将会在 composer.json 同级目录下生成 composer.lock 锁文件,该文件主要作用是约束当前包的版本。

  • 包的升级
composer update  #升级当前所有依赖
composer vendor/package  #更新指定包
  • 掌握这两项就可以实现包的安装和升级,可以通过 Composer 来加载优秀的软件,关于 Composer 更深入的理解,可以参考官方文档(没有什么比官网来的靠谱)。

Packagist 与 Composer 的关系

Composer 的包都是通过下载得到的,而存放这些资源的地址就是 Packagist ,Packagist 管理着包,而包的源地址是 VCS(线上版本控制系统),当 Composer 下载请求到达 Packagist 时,会根据包上传时指定的源路径去下载,而 Packagist 可以理解为一个资源汇总的门户网站。因为这个门户网站可能被墙,所以国内相应的产生了 中国全量镜像,可以对资源进行镜像存储,只需要将 Composer 配置修改就可以获取不受限制的镜像资源。

Composer 生产环境注意事项

实际生产中,大多数公司都会采取 GIT,SVN 等版本控制工具来管理代码,Composer 下载的包尽量不要放在版本控制中,因为这些包通常体积较大,比如一个 AWS 的SDK 就包含了几千个文件,这对于版本库的管理很不方便,推荐做法是在项目中保留 composer.json 确定引入的依赖包,通过 composer.lock 锁文件确定包的版本,然后各自在终端里下载所需依赖,这也是官方推荐做法。

你可能感兴趣的:(【PHP】Composer 的基本使用以及存在价值的理解)