PHP教程系列5 - 最重要的工具Composer

Composer是PHP的依赖管理工具,诞生的时间比较晚,在PHP5.3才正式发布。发布之后不温不火,支持的包也少,一度被认为是下一个pecl(比较失败的工具)。最近几年结合PSR(PHP Standards Recommendation)慢慢的被大家接受,虽然PHP程序员让人觉得天马行空,但对规范还是推崇备至。

现在,如果要学习PHP必须要会使用Composer,否则会偏离正确的学习路线。因为Composer中集成了几乎所有PSR规范,不按规范学习,家人两行泪。

Composer的发展历史

5年前,要是问PHP程序员Composer是什么?很多人不一定答的上。要是问phpize是什么?都知道是安装扩展的。而到今天PHPer每天都要使用Composer,回头看看这5年到底发生了什么?

  1. Composer包太少,直到今天支付宝和微信的SDK包还不支持Composer。
  2. 这种包管理方式有学习成本,旧方式一句include走天下。
  3. 引入Composer后对代码的侵入性很大。
  4. 有phpize安装扩展程序够用了。

而今天的情况已经大不一样:

  1. 大家都按照PSR的规范在开发代码,Composer包越来越多。
  2. 受其他语言的影响,特别是npm和Cargo这种包管理方式的普及,一句include走天下的方式慢慢的成为了历史,现在写代码将不会再出现includerequire(入口文件除外)。
  3. 在规范面前,一切阻碍都是纸老虎,侵入性问题也不再是问题。
  4. Composer现阶段无法替代phpize。

Composer的使用方法

  1. 安装Composer

    1
    2
    3
    4
    5
    6
    7
    8
    //unix and linux
    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer

    //windows
    C:\Users\username>cd C:\bin
    C:\bin>php -r "readfile('https://getcomposer.org/installer');" | php
    C:\bin>echo @php "%~dp0composer.phar" %*>composer.bat
  2. Composer基本语法

    使用下面四个基础命令就能很好的驾驭Composer。

    1
    2
    3
    4
    5
    6
    //初始化composer.json文件
    composer init
    //安装项目依赖文件
    composer install
    //更新项目依赖文件
    composer update
  3. Composer特殊设置

    在国内首先要解决的就是网络问题,下面是多个Composer源,推荐使用aliyun的Composer源,最稳定。

特别说明

  1. 版本号通配符(非常重要)

    在composer.json文件中需要设置依赖包的版本号,不同的通配符会导致composer update更新不同版本的依赖包。

    ~1.0.1 表示 >=1.0.1 < 1.1.0
    ^1.0.1 表示 >=1.0.1 < 2.0.0

    假如设置的是~1.0.1,如果这个包的下一个版本号是2.0.1,将永远无法更新。

  2. composer.lock锁文件一定要提交到代码库中

    在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件,这将锁定改项目的特定版本。

    有composer.lock后,任何人拿到你的项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。

    如果不存在 composer.lock 文件,Composer 将读取 composer.json 并创建锁文件。这时生产环境的版本可能和你本地的版本不一致,导致错误发生。

最后

PHP教程系列写到第五篇了,其他四篇如下,有兴趣的朋友可以看看。

  1. PHP教程系列1-Web开发的大世界
  2. PHP教程系列2-搭建PHP环境
  3. PHP教程系列3-写PHP程序前必须知道的5件事
  4. PHP教程系列4-按需加载的代码才有灵魂