猿问

“作曲家”包管理器如何工作?

我正在尝试安装“ Krumo ”

它说有两种安装方式,我尝试了第一种(下载 PHP 文件并将其包含在我的项目中)并且运行良好。

现在我正在尝试第二种方式(使用作曲家)。

一看到它就冒出一堆问题。

  • 在哪里运行这个命令?

  • 是不是相当于把“class.krumo.php”文件等皮肤文件下载到当前文件夹?

  • 我还需要在我的 PHP 中包含该文件吗?

  • 或者,也许通过运行此命令,krumo 成为我机器上 PHP 的内置函数(因此我可以在任何 PHP 文件上“开箱即用”地使用它)?

我设法发现这个install命令实际上不起作用(可能已经过时),并发现我必须运行composer require kktsvetkov/krumo. 我这样做并得到了这个:

http://img1.mukewang.com/61a08bc9000173f805950157.jpg

在我看来,它终于安装好了。文件夹下只添加了“composer.lock”和“composer.json”两个文件,找不到class.krumo.php文件,当然调用krumo()测试PHP文件会报错call to undefined function krumo

我需要一个关于 composer 包如何工作的大图。


繁星淼淼
浏览 198回答 1
1回答

慕桂英3389331

首先,您需要了解什么是作曲家。这是一个“依赖管理器”。所以它管理您的应用程序依赖项,基本上是您的应用程序需要工作的库。它递归地这样做。因此,如果您的应用程序需要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<?phprequire('../vendor/autoload.php');这将允许您正常使用任何已安装的库。对于您要安装的工具:// public/index.php<?phprequire('../vendor/autoload.php');$a = [&nbsp; &nbsp; 'foo' => 'bar',&nbsp; &nbsp; 'baz' => [1, 2, 3],&nbsp; &nbsp; 'xxx' = false];krumo($a);附带说明一下,那个图书馆似乎很老了。我会尝试获得一些更新的东西。我推荐Symfony 的 VarDump 组件。不,它不是一个特别友好的“新手”工具。它有助于处理很多事情,但它主要针对稍微更高级的用户,因为它有助于解决在入门/非常简单的项目中不太重要的问题。
随时随地看视频慕课网APP
我要回答