首先,你需要了解作曲家是什么。这是一个“依赖管理器”。所以管理您的应用程序依赖项,基本上是您的应用程序运行所需的库。
它递归地这样做。因此,如果您的应用程序需要NiceDependency
去工作,并且NiceDependency
反过来又需要AnotherNicePackage
,它会安装两者。它还处理冲突解决(当您的依赖项之一需要与其他依赖项不兼容的东西时)another您的依赖项需要)。
声明依赖项的文件是composer.json.
所以当你跑步时composer require [some-vendor/some-package]
,一些事情在幕后发生。简化很多事情:
- If your
composer.json
文件不存在,它将创建它。
- 它将尝试在中央存储库中找到您的依赖项(packagist.org)
- 如果找到,它将下载该包并将其存储在
vendor
目录。
- 它将更新您的
composer.json
它将您的依赖添加到require
key.
在此过程中,它将解析所有嵌套依赖项并对这些依赖项执行相同的操作。
完成后,它还会创建一个composer.lock
file.
该“锁定”文件存储对实际安装的所有包的所有引用的冻结快照。这是必要的,因为当您声明依赖项时,您可以定义一系列版本(例如“任何大于或等于版本 2.2;但低于版本 2.3”)。你的composer.lock
将存储实际安装的特定版本(例如“版本 2.2.4”)。
稍后,如果有人拿到你的项目文件并执行composer install
, the lock文件将被读取,因此他们安装的文件与您完全相同。
(require
添加对项目的composer.json 文件的依赖项;install
读你的composer.json
and composer.lock
文件并从那里建立一个项目;还有一个update
只读命令composer.json
,根据每个依赖项中的版本限制下载最新的可用软件包,并相应地更新`composer.lock)
此外,作曲家还提供帮助自动加载,使开发人员实际使用已安装库的过程更加轻松快捷。
自动加载是very方便的。您不仅不再需要添加require someclass.php;
声明您想要使用的每个类,但您还可以获得不必读取这些文件的优势直到真正需要它们为止.
因此,它不仅简化了这些新类的使用,还有助于提高应用程序的性能。
为此,在vendor
目录下有一个名为autoload.php
被建造。通常,您需要require
将此文件作为您在应用程序入口点上执行的第一件事。
例如,假设您有这样的结构:
- project root/
--- composer.json
--- composer.lock
--- vendor/
--- public/
----- index.php
Your index.php
文件应为:
// public/index.php
<?php
require('../vendor/autoload.php');
这将允许您正常使用任何已安装的库。对于您要安装的工具:
// public/index.php
<?php
require('../vendor/autoload.php');
$a = [
'foo' => 'bar',
'baz' => [1, 2, 3],
'xxx' = false
];
krumo($a);
As a side note, that library seems to be quite old. I'd try to get something a bit newer. I'd recommend Symfony's VarDump component.
And no, it is not a particularly friendly "newbie" tool. It helps dealing with a lot of things, but it's mostly aimed to slightly more advanced users, since it helps solving issues that aren't so significant in starter/very simple projects.