1 回答
TA贡献2036条经验 获得超8个赞
首先,您需要了解什么是作曲家。这是一个“依赖管理器”。所以它管理您的应用程序依赖项,基本上是您的应用程序需要工作的库。
它递归地这样做。因此,如果您的应用程序需要NiceDependency
工作,而NiceDependency
反过来又需要AnotherNicePackage
,它就会安装两者。它还处理冲突解决(当您的一个依赖项需要的东西与另一个依赖项要求的东西不兼容时)。
声明依赖项的文件是composer.json
.
因此,当您跑步时composer require [some-vendor/some-package]
,幕后会发生一些事情。简化很多事情:
如果您的
composer.json
文件不存在,它将创建它。它将尝试在中央存储库(packagist.org)中找到您的依赖项
如果找到,它将下载包并将其存储在
vendor
目录中。它将更新您的
composer.json
它以将您的依赖require
项添加到密钥。
在此过程中,它将解析所有嵌套的依赖项并对其执行相同的操作。
完成后,它还会创建一个composer.lock
文件。
这个“锁定”文件存储了对实际安装的所有包的所有引用的冻结快照。这是必要的,因为当您声明您的依赖项时,您可以定义一系列版本(例如“任何大于或等于 2.2 版;但低于 2.3 版”)。您composer.lock
将存储实际安装的特定版本(例如“版本 2.2.4”)。
稍后,如果有人获取了您的项目文件并执行了composer install
,则会读取锁定文件,以便他们安装与您安装的文件完全相同的文件。
(require
向您的项目的 composer.json 文件添加依赖项;install
读取您的composer.json
和composer.lock
文件并从那里设置项目;还有一个update
只读命令,composer.json
根据每个依赖项中的版本限制下载最新的可用包,然后更新`composer.lock 相应)
此外,composer 有助于自动加载,使开发人员在实际使用已安装库的过程中更轻松、更快捷。
自动加载非常方便。您不仅不再需要为require someclass.php;
要使用的每个类添加语句,而且您还获得了在实际需要之前不必读取这些文件的优势。
因此,它不仅简化了这些新类的使用,还有助于使您的应用程序性能更好。
为此,在vendor
目录autoload.php
中创建了一个名为的文件。通常,您需要require
将此文件作为在应用程序入口点上执行的第一件事。
例如,假设您有这样的结构:
- project root/
--- composer.json
--- composer.lock
--- vendor/
--- public/
----- index.php
您的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);
附带说明一下,那个图书馆似乎很老了。我会尝试获得一些更新的东西。我推荐Symfony 的 VarDump 组件。
不,它不是一个特别友好的“新手”工具。它有助于处理很多事情,但它主要针对稍微更高级的用户,因为它有助于解决在入门/非常简单的项目中不太重要的问题。
- 1 回答
- 0 关注
- 197 浏览
添加回答
举报