PHP教程系列5 - 最重要的助手Composer

2019-11-21 10:49:22 浏览数 (1)

城边编程 phplog

写文章耗时100分钟

读完仅需9分钟

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后对代码的侵入性很强。

3. 有phpize安装扩展程序够用了。

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

1. 大家都按照PSR的规范在开发代码,Composer包越来越多。

2. 受其他语言的影响,特别是npm和cargo这种包管理方式的流行,一句`include `走天下的方式慢慢成为了历史,现在写PHP代码将不会再出现`include`和`require`(入口文件除外)。

3. 在规范面前,一切阻碍都是纸老虎,侵入性问题也不再是问题。

4. Composer现阶段无法替代phpize。

Composer的使用方法

1. 安装Composer

代码语言:javascript复制
//unix and linux
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

//windows
C:Usersusername>cd C:bin
C:bin>php -r "readfile('https://getcomposer.org/installer');" | php
C:bin>echo @php "%~dp0composer.phar" %*>composer.bat

2. Composer基本语法-使用下面三个基础命令就能很好的驾驭Composer

代码语言:javascript复制
//初始化composer.json文件
composer init
//安装项目依赖文件
composer install
//更新项目依赖文件
composer update

3. Composer特殊设置

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

阿里云 https://mirrors.aliyun.com/composer/

华为云 https://mirrors.huaweicloud.com/repository/php/

腾讯云 https://mirrors.cloud.tencent.com/composer/

安畅网络 https://php.cnpkg.org

上海交大 https://packagist.mirrors.sjtug.sjtu.edu.cn

配置方法如下,以阿里云为例

代码语言:javascript复制
composer config -g repo.packagist composer https://mirrors.aliyun.com/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教程系列写到了第五篇,其他四篇如下,有兴趣的朋友可以看看。

PHP教程系列1-Web开发的大世界

PHP教程系列2-搭建PHP环境

PHP教程系列3-写PHP程序前必须知道的5件事

PHP教程系列4-按需加载的代码才有灵魂

0 人点赞