愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

Composer简单入门

Composer是一个依赖管理工具,它是PHP开源社区中受nodeJS的npm和ruby的bundler的启发所开发出来的一个工具,用以解决库依赖的问题。现在越来越多的开源产品中都逐渐加入了对composer的支持。为了能够使用这么一个方便的工具,还是有必要来学一下它的,下面就是个人对这个工具入门学习的记录

系统要求

并不是所有的PHP版本都可以支持composer的,composer官方文档要求需要PHP 5.3.2+ 版本

MAC OS下安装

由于个人使用MAC OS,所以就只关注了在Mac OS下的安装方法。要使用composer其实只需要一个文件即可,也就是composer.phar文件。我们首先要把它下载下来,打开“终端”,执行:

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

如果你用这个命令下载失败了,那可用再试试用:

php -r "readfile('https://getcomposer.org/installer');" | php

我使用curl下载后,提示:

Composer (version 1.3.2) successfully installed to: /Users/Ame/composer.phar
Use it: php composer.phar

所以,我知道它放在了/Users/Ame/这个目录下。其实,现在这个时候,我们就可用使用composer了,但是要用 php composer.phar 这么长的一串,想想就觉得特别麻烦,那么有没有什么好一点的办法,可用简化这个命令呢,那么我们可以cd下切换到composer.phar所在目录,然后把这个文件移动到 usr/local/bin 里去,如:

mv composer.phar usr/local/bin/composer

如此一来,我们就可用使用“composer”这一命令来使用composer了

使用说明

composer是通过读取目录下的composer.json文件来完成依赖处理的,支持composer的项目,都会有一个composer.json文件,而我们此时,只需要在相应文件目录下,执行:

composer intall

就可以了!

composer.json文件的说明

1、可用在composer.json中指明所需要的依赖信息,如:

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

composer就知道,我们需要monolog厂商的monolog,而且版本是1.0.x的
2、这里,“monolog/monolog”是一个包名称,因为不同厂商可以有同样的包名,因此为了避免冲突,就需要使用 <厂商名>/<包名> 这样子的名称
3、包版本,这里“1.0.*”中的*是一个通配符,意味着可用匹配任何版本号为1.0.开头的版本,关于包版本,还有更多的使用信息如:

  • 3-1. 确切的版本号,如:1.0.2
  • 3-2. 范围,如>=1.0或者>=1.0, <2.0或者>=1.0, <2.0|>=2.1,其中“,”表示AND关系,“|”表示OR关系
  • 3-3. 最低版本~1.2,表示.2部分是可变的,但1部分是不能变的,故它相当于>=1.2,<2.0

composer.lock文件

1、在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定该项目的特定版本。这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响
2、如果不存在 composer.lock 文件,Composer 将读取 composer.json 并创建锁文件。
这意味着如果你的依赖更新了新的版本,你将不会获得任何更新。此时要更新你的依赖版本要使用 update 命令。这将获取最新匹配的版本(根据你的 composer.json 文件)并将新版本更新进锁文件。

php composer.phar update

如果只想安装或更新一个依赖,可以白名单它们:

php composer.phar update monolog/monolog [...]

自动加载

composer会自动建立一个“vendor/autoload.php”文件,只需要引入这个文件,便可以自动加载使用依赖,使用示例如下:

<?php
require 'vendor/autoload.php';
$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));

$log->addWarning('Foo');
?>

以上就是composer最最基本的使用指南,关于更多的composer使用说明,可浏览composer官方文档