一、Windows下安装Composer
Composer
是 PHP用来管理依赖关系
(dependency)的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer
会帮你安装这些依赖的库文件。
我们打开Composer 中文网
的下载下载页面,下载Composer安装包。然后一路next
安装就行了。
安装过程中会自动搜索php.exe的安装路径,如果没有,就手动选择php下的php.exe安装路径。并且它会同时自动设置好系统的环境变量,因此你可以在任何目录下直接使用
composer
命令。
打开一个新的命令行窗口进行测试是否安装成功:
C:\Users\Administrator>composer -V
Composer version 1.7.2 2018-08-16 16:57:12
如果有上面的类似输出,说明已经安装成功了。
我想你一定有一个疑问,那就是运行Composer命令后,是从哪里下载依赖文件呢?是从Packagist!Packagist 是Composer默认的中央仓库。
由于众所周知的原因,国外的网站连接速度很慢,并且随时可能被“墙”甚至“不存在”,我们这里修改composer
的全局配置文件,使用Packagist / Composer中国全量镜像
。打开CMD并执行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
二、如何使用Composer
要在项目中使用Composer
,我们只需要一个composer.json
文件。该文件包含了项目的依赖和其它的一些元数据。而composer.json
文件使用的是JSON format
。我们下面就把几个常用的语法格式介绍一下:
1. require
第一件事情(并且往往只需要做这一件事),你需要在composer.json
文件中指定require key
的值,告诉 Composer
你的项目需要依赖哪些包。比如我们在D:\WWW\Test
下新建一个composer.json
文件,内容如下:
{
"require": {
"twig/twig": "^1.34"
}
}
你可以看到, require
需要一个包名称
(twig/twig)映射到包版本
(1.34) 的对象。包名称
由供应商名称
和其项目名称
构成。它允许两个不同的人创建同样名名称的库,这样很好的解决了命名冲突的问题。
下面重点介绍一下版本约束写法。
名称 | 实例 | 描述 |
---|---|---|
确切的版本号 | 1.0.2 | 你可以指定包的确切版本。 |
范围 | >=1.0 >=1.0,<2.0 >=1.0,<1.1 | >=1.2 | 通过使用比较操作符可以指定有效的版本范围。 有效的运算符:>、>=、<、<=、!=。 你可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理。一个管道符号|将作为逻辑OR处理。 AND 的优先级高于 OR。 |
通配符 | 1.0.* | 你可以使用通配符来指定一种模式。1.0.与>=1.0,<1.1是等效的。 |
波浪运算符 | ~1.2 | ~1.2相当于>=1.2,<2.0。 |
抑扬符 | ^1.2 | ^和~的意思很接近,在x.y的情况下都是代表x.y <= 版本号 < (x+1).0,但是在版本号是x.y.z的情况下有区别,举个例子:~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0;而 ^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0 |
Twig是一款灵活、快速、安全的PHP模板引擎。
现在我们打开CMD,定位到D:\WWW\Test
然后输入composer install
,过一会儿就会发现Test
目录中多了一个vendor
文件夹和composer.lock
文件。进入vendor
目录,会发现下面有composer
、symfony
、twig
三个文件夹和一个autoload.php
文件。
2. composer.lock(锁文件)
在安装依赖后,Composer
把安装时确切的版本号列表写入composer.lock
文件。这将锁定该项目的特定版本。因此在提交应用程序时,必须把composer.lock
和composer.json
一起提交到版本库中。因为 install
命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json 文件中的定义)。
这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。如果不存在锁文件,Composer
将读取composer.json
并创建锁文件。
这意味着如果你的依赖更新了新的版本,你将不会获得任何更新。此时要更新你的依赖版本请使用update
命令。这将获取最新匹配的版本(根据你的composer.json
文件)并将新版本更新进锁文件。
如果只想安装或更新一个依赖,你可以白名单它们:php composer.phar update monolog/monolog [...]
网友评论