我正在尝试安装“ Krumo”
它说有两种安装方式,我尝试了第一种(下载PHP文件并将其包含到我的项目中),并且运行良好。
现在,我正在尝试第二种方式(使用作曲器)。
我看到第二个问题。
我设法发现此install
命令实际上不起作用(可能已过时),并发现我必须运行composer require kktsvetkov/krumo
。我这样做了,得到了这个:
在我看来,它终于安装好了。在该文件夹下,仅添加了两个文件“ composer.lock”和“ composer.json”,找不到class.krumo.php文件,当然在测试PHP文件中调用krumo()
会抛出错误call to undefined function krumo
。
我需要全面了解作曲家软件包的工作原理。
答案 0 :(得分:2)
首先,您需要了解什么是作曲家。这是一个“依赖管理器”。因此,它管理您的应用程序依赖项,基本上是您的应用程序需要工作的库。
它如此递归地执行。因此,如果您的应用程序需要NiceDependency
才能工作,而NiceDependency
又需要AnotherNicePackage
,那么它将同时安装两者。它还可以解决冲突(当您的一个依赖项与您的另一个依赖项不兼容时)。
声明依赖项的文件为composer.json
。
因此,当您运行composer require [some-vendor/some-package]
时,会有一些事情发生。大大简化了事情:
composer.json
文件不存在,它将创建它。vendor
目录中。composer.json
,将您的依存关系添加到require
键。在此过程中,它将解析所有嵌套的依赖项,并对它们执行相同的操作。
完成后,还将创建一个composer.lock
文件。
此“锁定”文件存储了对所有实际安装的软件包的所有引用的冻结快照。这是必要的,因为在声明依赖项时,您可以定义一个版本范围(例如“大于或等于2.2版本;但小于2.3版本”)。您的composer.lock
将存储实际安装的特定版本(例如“版本2.2.4”)。
后来,如果有人获得了您的项目文件并执行了composer install
,则会读取 lock 文件,以便他们安装与您完全相同的文件。
({require
向项目的composer.json文件添加依赖项; install
读取您的composer.json
和composer.lock
文件并从那里建立一个项目;还有一个update
命令,该命令将仅读取composer.json
,下载与每个依赖项中的版本限制有关的最新可用软件包,并相应地更新`composer.lock)
此外,composer可以帮助autoloading,使开发人员更轻松,更快捷地实际使用已安装的库。
非常非常方便。不仅您不再需要为要使用的每个类添加require someclass.php;
语句,而且还获得了不必读取这些文件直到实际需要它们的优点。 / p>
因此,不仅简化了使用这些新类的过程,而且还有助于使您的应用程序性能更好。
为此,在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's VarDump component.
而且不,它不是一个特别友好的“新手”工具。它有助于处理很多事情,但是它主要针对稍微高级的用户,因为它有助于解决在入门/非常简单的项目中不太重要的问题。