咱们已经安装了Composer,那么如何在咱们的项目中使用Composer呢?接下来的部分,我将对实际项目中如何使用Composer进行总结。php
要开始在你的项目中使用 Composer,你只须要一个composer.json文件。该文件包含了项目的依赖和其它的一些元数据。从该文件的后缀名能够知道,这是一个JSON格式的文件。json
下面经过一个最简单的示例项目来讲明如何使用Composer。项目代码结构以下:服务器
project/ ├── src/ │ ├── a.class.php │ ├── b.class.php
接下来,咱们要引入Composer。在项目的根目录创建一个composer.json文件。代码结构以下:app
project/ ├── src/ │ ├── a.class.php │ ├── b.class.php ├── composer.json
好比咱们的项目如今须要依赖monolog/monolog
这样的一个包,那接下来,咱们就须要在composer.json中写入如下内容:composer
{ "require": { "monolog/monolog": "1.0.*" } }
能够看到,require
须要一个包名称(例如monolog/monolog
)映射到包版本(例如:1.0.*)的对象。而这里最重要的两个概念就是包名称和包版本。工具
igorw/json
和seldaek/json
。 包版本
包版本的门道就多了。好比在前面的例子中,咱们引入的monolog版本指定为1.0.*
。这表示任何从1.0
开始的开发分支,它将会匹配1.0.0
、1.0.2
或者1.0.20
。
版本约束能够用几个不一样的方法来指定。ui
使用方式 | 示例 | 描述 |
---|---|---|
确切的版本号 | 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 。 |
如今咱们的示例项目已经有了composer.json文件,接下来咱们就须要经过composer命令来安装依赖。安装依赖包步骤以下:spa
composer install
命令。接下来就是等待安装依赖包的过程,安装完成后,咱们的项目目录将会变成这个样子:code
project/ ├── src/ │ ├── a.class.php │ ├── b.class.php ├── vendor/ ├── composer.json ├── composer.lock
多了一个vendor文件夹和一个composer.lock文件。对于vendor目录,这是composer的一个惯例,把第三方的代码到一个指定的目录vendor。对象
在安装依赖后,Composer将把安装时确切的版本号列表写入composer.lock文件。这将锁定该项目的特定版本。
为了保证版本一致问题,请提交你应用程序的composer.lock(包括composer.json)到版本库中。
这是很是重要的,由于install命令将会检查锁文件是否存在,若是存在,它将下载指定的版本(忽略composer.json文件中的定义)。
这意味着,任何人创建项目都将下载与指定版本彻底相同的依赖。咱们的持续集成服务器、生产环境、你团队中的其余开发人员、每件事、每一个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。
若是不存在composer.lock文件,Composer将读取composer.json并建立锁文件。同时,这也意味着若是咱们的的项目依赖更新了新的版本,咱们将不会得到任何更新。此时要更新依赖版本则需使用update
命令。这将获取最新匹配的版本(根据composer.json文件)并将新版本更新进锁文件。
composer update
Packagist是什么?Packagist是Composer的主要资源库。一个Composer的库基本上是一个包的源:记录了能够获得包的地方。Packagist的目标是成为你们使用库资源的中央存储平台。这意味着咱们能够require
那里的任何包。
咱们能够访问https://packagist.org来浏览和搜索咱们须要的资源包。
归根到底,Composer是一个依赖管理的工具。咱们使用Composer将对应的依赖包下载下来之后,如何在咱们的项目中进行使用呢?对于这一点,Composer也想的很周到。
已经存在的库,咱们要把它加载到咱们的项目中,对于库的自动加载信息,Composer生成了一个vendor/autoload.php
文件。咱们能够简单的引入这个文件,这样就会获得一个免费的自动加载支持。而这一切都是Composer来帮助咱们完成的,咱们只须要在应用层使用便可。例如:
require 'vendor/autoload.php';
这使得咱们能够很容易的使用第三方代码。例如:若是项目依赖monolog,咱们就能够像这样开始使用这个类库,而且他们将被自动加载。
$log = new Monolog\Logger('name'); $log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); $log->addWarning('Foo');