一. What is composer?
是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。 ---- Composer文档
这边的依赖可以理解为各种开发包或者插件,当我们在项目中要使用第三方工具库的时候,我们往往要从官网或者一些别的其他途径来获取源文件,并放入到自己的项目中,在使用的时候,通过手动require的方式引用。当然我们大部分会通过写一个自动加载方法来进行require。但当我们使用比较大的第三方工具库时,可能它的其中又去依赖了更多别的第三方包。而且往往有时候工具库的版本更新可能会不兼容旧版本,我们手动去进行依赖那将会是一件痛苦的事情。<br/>
那么Compser能为我们解决哪些问题:
- a) 你有一个项目依赖于若干个库。
- b) 其中一些库依赖于其他库。
- c) 你声明你所依赖的东西。
- d) Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。
二. 开始使用Composer
系统要求: 运行 Composer 需要 PHP 5.3.2+ 以上版本。<br/>
安装Composer: Composer文档-安装
Composer的包版本符号
composer的依赖声明通常都写在项目根目录下的composer.json文件中,通过JSON format的方式进行编写,就像这样子:
{
"require": {
"monolog/monolog": "1.0.*"
}
}
require是指定Key,我们需要做的,就是在这个指定key中增加我们需要的依赖包 ("monolog/monolog") 和指定的版本 ("1.0.*"),那么在使用前,首先我们需要知道composer中是怎么声明我们需要依赖的包版本的
:point_right:点击链接查看
Composer install和update
如果composer已经安装成功的话,可以直接在命令行中执行 "composer" 命令来查看命令列表,但在大部分的时候,使用频率最高的是install和update命令,顾名思义就是使用composer安装和更新依赖包。比如我们已经在项目的composer.json中声明了依赖
{
"require":{
"mustache/mustache":"2.8.0"
}
}
在命令行中直接执行 "composer install",就能直接将这个工具库依赖到我们系统中
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing mustache/mustache (v2.8.0): Downloading (100%)
Writing lock file
Generating autoload files
再打开项目文件夹,就能发现新增了vendor文件夹和composer.lock文件,vendor目录存放是composer的自动加载文件和我们刚刚下载的工具库,composer.lock文件是在安装依赖后,composer将把安装时确切的版本号列表(composer.json定义的)写入composer.lock 文件中,锁定项目所使用的包版本。这样做的意义是:
- 在提交项目的时候,请将lock文件也提交,这样在团队开发中,如果有别的成员进入开发,建立项目时都将下载与指定版本完全相同的依赖,减轻潜在的部署错误。
- 当我们的项目搁浅很久,在几个月后重新安装项目,也能正常的继续工作,尽管可能项目的依赖包已经发布了很多新版本。
所以,如果已经存在lock文件的话,我们要更新在使用的依赖,这时候就需要执行 "composer update" 命令进行更新,update命令会从新读取composer.json的文件,更新所声明依赖版本并重新读写composer.lock文件。这边我将composer.json中的依赖版本声明为 "v2.9.0"执行命令
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
- Updating mustache/mustache (v2.8.0 => v2.9.0): Loading from cache
Writing lock file
Generating autoload files
可以通过 "composer show -i" 命令查看当前已经安装的依赖包版本
$ composer show -i
mustache/mustache v2.9.0 A Mustache implementation in PHP.
三. 在项目中使用依赖包
composer提供了自动加载文件来提供自动加载支持,我们只要在项目的入口文件中添加这行代码
<?php
require "vendor/autoload.php";
$obj = new Mustache_Engine();
$obj->render('Hello world');
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/monokai.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>