Composer基础用法

基本用法


  • 介绍
    本文通过安装monolog/monolog 为例介绍Composer基本用法。如果你还没安装Composer,请参阅上一篇

    Note:本文将认为你已安装Composer


  • composer.json: 项目安装
    要在项目中开始使用composer,所需的只有一个composer.json文件。这个文件描述了你的项目所依赖以及所依赖包的依赖。
    第一件在composer.json所做的事情是声明项目所需要的依赖包。
    {
        "require": {
            "monolog/monolog": "1.0.*"
        }
    }

如代码所示,它声明了项目需要一个包名为:monolog/monolog 版本号为:1.0.* 的依赖包。
包名
包名会显示在一个vendor的文件夹下。安装依赖时会自动创建第三方依赖包的文件夹(命名空间)所有的依赖包都会这个文件夹下。
版本号
在上面的例子中,我们声明 需要monolog 的版本号是 1.0.* 。意味着所有1.0的分支版本。即版本号的范围是 >=1.0 <1.1 。

安装依赖包

要安装依赖包,
windows:只需在cmd进入composer.json所在目录运行

composer install

linux:只需运行

php composer.phar install

此时Composer将会自动找到 monolog/monolog 最新匹配版本号并下载到vendor文件夹下。vendor/monolog/monolog.

提示:如果使用git管理项目,你可以将vendor加入 .gitignore。你或许不想添加所有的代码仓库。

你会发现在项目目录下自动创建了一个composer.lock文件。

composer.lock - 锁文件

安装依赖包后,Compo将所安装确切版本列表写在composer.lock文件。

将composer.lock与composer.json一起提交。
这一步很重要,因为安装命令会检查composer.lock文件是否存在,如果存在,它将下载composer.lock文件里面所声明的版本号而忽略掉composer.json所声明的。

这意味着所有安装此项目时都将安装同一个版本的依赖。

如果composer.lock文件不存在,Composer 在执行安装命令后将会从composer.json文件读取包名跟版本号并且创建composer.lock文件。

Composer更新
linux下:php composer.phar update
windows下:composer update

注意: 当 composer.lock 与 composer.json 不同步时将会发出警告

如果你只想安装一个依赖,可以这样子写:

linux下:
php composer.phar update monolog/monolog [...]

windows下:
composer update monolog/monolog [...]

提示:对于库来说composer.lock是不必要上传的

Packagist

Packagist 是主要的Composer仓库。一个能够让你获取依赖包的地方。Packagist 致力于成为每个人的中心仓库,意味着你可以自动获取可用的依赖包。

可以到 Packagist 网页(packagist.org)浏览或者搜索包。

任何使用 Composer 的开源项目都应该发布到 Packagist。

自动加载

对于需要自动加载的信息,Composer生成一个 vendor/autoload.php 文件。你可以引入此文件自由的自动下载。

require __DIR__ . '/vendor/autoload.php';

这真正使得使用第三方代码变得简便。例如,你的项目依赖于 Monolog,你可以直接使用,它们将自动被下载。

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');

你甚至可以通过添加一个自动加载文件到 composer.json 中来加载自己的代码到自动加载器中。

{
    "autoload": {
        "psr-4": {"Acme\\": "src/"}
    }
}

Composer 将会为 Acme 命名空间注册一个 PSR-4 自动加载器。
你定义了一个命名空间。这个 src 目录需要在项目根目录下,跟 vendor 在同一级。
添加自动加载的字段后,你需要重新运行 dump-autoload 重新生成 vendor/autoload.php 文件。

引入 autoload.php 时会返回 自动加载器的实例(autoloader instance),所以你可以将其用一个变量接收并且可以添加更多的命名空间。例如:

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->add('Acme\\Test\\', __DIR__);

除了可以自动加载 PSR-4 ,Composer 还支持 PSR-0 ,文件,classmap 的自动加载。更多信息请查看autoload

提示: Composer provides its own autoloader. If you don’t want to use that one, you can just include vendor/composer/autoload_*.php files, which return associative arrays allowing you to configure your own autoloader.
Composer提供了自己的加载器。如果你不想用,可以这样子引入 include vendor/composer/autoload_*.php 文件,此时返回关联的数组可以配置你自己的加载器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值