作者: JeremyWei | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明

网址: http://weizhifeng.net/manage-php-dependency-with-composer.html

介绍

Composer是PHP中的一个依赖管理工具. 它可以让你声明自己项目所依赖的库,然后它将会在项目中为你安装这些库。

依赖管理

Composer不是包管理器。是的,它实际上和"包"或者库打交道,但是它是以项目为单位进行管理,把它们安装到你项目中的一个目录(例如vendor)。默认情况下它不会以全局的方式安装任何东西。因此,它是一个依赖管理器。

这个想法并不新鲜,Composer的灵感是来自于node的npm和ruby的bundler。但是目前PHP还没有一个这样的工具。

Composer解决的问题是:

a) 你有一个依赖N多库的项目。

b) 这些库中一些又依赖于其他的库。

c) 你声明你所依赖的库。

d) Composer找出哪些包的哪个版本将会被安装,然后安装它们(也就是把它们下载到你的项目中)。

声明依赖关系

假设你正在创建一个项目,然后你需要一个日志操作的库。你决定使用monolog。为了把它加入到你的项目中,你需要做的就是创建一个名为composer.json的文件,其描述这个项目的依赖关系。

{
"require": {
"monolog/monolog": "1.2.*"
}
}

我们简单的描述说我们的项目依赖某个monolog/monolog包,版本只要是以1.2开头的就行。

系统要求

Composer需要PHP 5.3.2+才能运行。一些灵敏的PHP设置和编译选项也是必须的,不过安装程序(installer)会警告你任何不兼容的地方。

如果想要从源码而不是简单的从zip压缩包中安装软件包的话,你将需要git,svn或者hg,这依赖于软件包是通过什么进行版本控制的。

Composer是兼容多平台的,并且我们力争使其在Windows,Linux和OSX上的运行无差异。

安装 - *nix

下载Composer可执行程序

局部安装

为了获取Composer,我们需要做两件事。第一个是安装Composer(前面说过了,这意味下载它到你的项目中):

$ curl -sS https://getcomposer.org/installer | php

这只会检查一些PHP设置,然后下载composer.phar到你的工作目录中。这个文件是Composer二进制文件。它是一个PHAR (PHP archive),PHP的归档格式,也可以像其他命令一样在命令行上运行。

你可以使用--install-dir选项,并且提供一个目标目录(可以是绝对或者相对路径)从而把Composer安装到一个指定的目录:

$ curl -sS https://getcomposer.org/installer | php -- --install-dir=bin

全局安装

你可以把这个文件放到任何你想放的地方。如果你把它放到你的PATH中,你就可以全局访问它了。在类unix系统中你甚至可以使它可执行,并且调用的时候不需要php。

你可以执行这些命令从而能够在你的系统上简单的访问composer:

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

然后,只需要执行composer命令来运行Composer,而不是php
composer.phar
。

安装 - Windows

使用安装程序

这是在你的机器上安装Composer最简单的方法。

下载并运行Composer-Setup.exe,它将会安装最新的Composer版本并且设置好PATH,然后你就可以在命令中的任何目录下调用composer了。

手动安装

切换到一个存在于PATH环境变量中的目录,然后执行安装代码片段来下载composer.phar:

C:\Users\username>cd C:\bin
C:\bin>php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"

创建一个新的以.bat结尾的composer文件:

C:\bin>echo @php "%~dp0composer.phar" %*>composer.bat

关闭你当前的终端。打开一个新的终端测试一下:

C:\Users\username>composer -V
Composer version 27d8904 C:\Users\username>

使用Composer

我们接下来要使用Composer来安装项目的依赖。如果你在当前目录下没有一个叫作composer.json的文件,请跳到基本使用章节。

为了解决并下载依赖,运行install命令:

$ php composer.phar install

如果你是全局安装,并且目录下没有phar文件,那么运行这个:

$ composer install

如果是上面的例子,这个操作将会下载monolog到vendor/monolog/monolog目录。

自动加载

除了下载库之外,Composer也会创建一个自动加载文件,这个文件能够自动加载Composer下载的库中所有的类。如果想使用它,只需要在你代码启动的地方加上如下代码:

require 'vendor/autoload.php';

哇哦!现在开始使用monolog吧! 如果想进一步学习Composer,继续阅读「基本使用」章节。 如果想要找需要的package,到Packagist。

参考

PHP依赖管理工具Composer入门的更多相关文章

  1. 有用PHP依赖管理工具Composer新手教程

    PHP依赖管理工具Composer新手教程 Composer 是 PHP 的一个依赖管理工具.它同意你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 依赖管理 Composer 不是一个包管理 ...

  2. PHP的依赖管理工具----composer

    安装Composer 参考:https://getcomposer.org/doc/01-basic-usage.md composer 是PHP依赖管理工具 PHP最低版本要求5.3.2,需要允许o ...

  3. PHP的包依赖管理工具Composer简介

    composer是一个基于项目的依赖管理器,负责将php项目的所依赖的包和库安装在项目的目录中,默认不会不会安装任何数据到全局.他用于取代之前pear工具 1 安装Composer curl -sS  ...

  4. Composer : php依赖管理工具

    原始时代 我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了 总结如下 代码 ...

  5. composer php依赖管理工具

    #composer是什么 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. composer出现之前我们php项目依赖管理大部分都是手动 ...

  6. windows下安装php依赖关系管理工具composer

    1.安装Composer Composer是PHP的依赖管理工具之一,官方网站 http://getcomposer.org/ .它支持多种安装方式,对于在win下做开发的草来说,最便捷的方式就是下载 ...

  7. Golang依赖管理工具:glide从入门到精通使用

    这是一个创建于 2017-07-22 05:33:09 的文章,其中的信息可能已经有所发展或是发生改变. 介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题.Java有牛逼轰轰 ...

  8. Go 包依赖管理工具 —— govendor

    govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...

  9. yarn依赖管理工具的使用

    Yarn是Facebook发布的一款依赖管理工具,它比npm更快.更高效. 与NPM命令对照 npm install => yarn install npm install --save [pa ...

随机推荐

  1. CentOS/RHEL 安装EPEL第三方软件源

    EPEL源简介 EPEL(Extra Packages for Enterprise Linux) 是由 FedORA 社区打造,为 RHEL 及衍生发行版如 CentOS等提供高质量软件包的项目.装 ...

  2. z-index神奇的失效了!!!

    z-index简单介绍 首先z-index只对定位元素有效,什么是定位元素呢,也就是设置了position属性的元素,position:relative--相对定位,position:absolute ...

  3. 你不知道的css各类布局(二)之流体布局、液体布局、栅格布局

    流体布局 什么是流 在谈论流体布局之前我们需要知道一件事情就是何为“流”,所谓“流”就是“文档流”,是css中的一种基本定位和布局 概念 流体布局(Liquid/Fluid Layout)指的是利用元 ...

  4. wpf之二进制资源

    一.当需要添加图片.音频.视屏的资源到wpf项目里是,可以直接把文件添加到项目里 右击add->existing item. 1.如果想将外部文件编异常目标成为二进制资源,在文件的属性窗口 Bu ...

  5. MySQL学习笔记:count(1)、count(*)、count(字段)的区别

    关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是COUNT. 但是,就是这个常用的COUNT函数,却暗藏着很多玄机,尤其是在面试的时候,一不小心就会被虐.不信的话请 ...

  6. 上述代码在JavaScript事件处理中

    上述代码在JavaScript事件处理中很常见,主要设置为与旧版本的Internet Explorer(主要在IE9之前)兼容,因为旧版本的IE不支持标准的W3C事件处理规范. 此代码中的e表示事件对 ...

  7. curl命令用法

    curl命令是一个功能强大的网络工具,它能够通过http.ftp等方式下载文件,也能够上传文件,同时支持HTTPS等众多协议,还支持POST.cookies.认证.从指定偏移处下载部分文件.用户代理字 ...

  8. 通过Callable接口实现多线程

    一.通过Callable接口实现多线程 c.实现Callable重写call方法 实现Callable和实现Runnable类似,但是功能更强大,具体表现在 a.可以在任务结束后提供一个返回值,Run ...

  9. 在线预览(pptx、ppt、pps、docx、doc、xlsx、xls)

    http://view.officeapps.live.com/op/view.aspx?src=<文档位置> 示例文档https://www.dujin.org/file/ppt/duj ...

  10. 由于MTU设置不当导致的访问超时

    现象 工作中遇到一件怪事:搭建好服务器后(VPN服务器,创建了虚拟网卡),服务器和客户端之间响应正常且很稳定,客户端也能正常通过服务器访问外网.但是访问个别网站时可以打开文字,但是部分图片打不开(也不 ...