Composer入门
Composer 是 PHP 的一个依赖管理工具。它允许你声明项目所依赖的代码库,并且在项目中为你安装这些库。
Composer 不是一个包管理器。是的,Composer处理 “packages” 和 “libraries”,但是Composer是在每个项目的基础上管理它们,把它们安装到项目的某个目录中(例如 vendor
)。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理,而不是传统意义上的软件包管理(比如apt-get,yum等)
举个例子,如果你的项目依赖PHPMailer发送邮件,依赖PHPExcel生成Excel表格,传统情况下,你需要到对应的官网去下载这些库包,然后解压到第三方类库目录中(如vendor)并在php中加载这些库的入口文件,但是,有了Composer之后,你只需要在项目中声明你需要的库,Composer就能帮你把这些库下载到对应的目录并在php中自动加载,会非常省事。
你肯定好奇Composer的类库仓库在哪,它是从哪下载的这些包。
Packagist 是 Composer 的默认的开发包仓库。你可以将自己的安装包提交到 packagist,将来你在自己的 VCS (源码管理软件,比如 Github) 仓库中新建了 tag 或更新了代码,packagist 都会自动构建一个新的开发包。这就是 packagist 目前的运作方式,将来 packagist 将允许直接上传开发包。
安装Composer
curl sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
系统要求
运行Composer需要PHP5.3.2以上的版本
声明项目依赖关系
这里以phpmailer为例子,假设项目中需要phpmailer 5.2.*的任意版本来发送邮件
先创建一个composer.json文件,写入以下内容
{ "require": { "phpmailer/phpmailer": "5.2.*" } }
使用 Composer
composer install
自动加载
引用composer自动加载文件,Composer就能帮你自动加载项目中需要的类
require 'vendor/autoload.php';
=======================更多小技巧=================================
安装类库到指定目录
composer默认安装类库到vendor目录下,如果需要安装到其它目录(如lib/vendor),可以配置config中的vendor-dir,具体如下:
{ "config": { "vendor-dir": "lib/vendor" }, "require":{ "phpmailer/phpmailer":"5.2.*" } }
仅更新单个库
composer -v update foo/bar
不编辑composer.json
的情况下安装库
composer -v require "foo/bar:1.0.0"
安装时忽略平台依赖(如某些 php 扩展)
composer install --ignore-platform-reqs "phpoffice/phpexcel"
Packagist加速
在国内使用这些国外服务,都很慢,在composer.json中配置repositories字段,使用镜像,速度会大幅提升,修改完的结果:
{ "require":{ "phpmailer/phpmailer": "5.2.*" }, "repositories": [ {"type": "composer", "url": "http://pkg.phpcomposer.com/repo/packagist/"}, {"packagist": false} ] }
更多内容,请访问Composer中文网