Composer入门

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中文网

%1 $ S

发表回复