前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP教程系列5 - 最重要的助手Composer

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

作者头像
sibenx
发布2019-11-21 10:49:22
6550
发布2019-11-21 10:49:22
举报
文章被收录于专栏:城边编程

城边编程 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:\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

代码语言: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-按需加载的代码才有灵魂

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 城边编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档