“composer”包管理器如何工作?

2023-12-13

我正在尝试安装“Krumo"

它说有两种安装方法,我尝试了第一种方法(下载 PHP 文件并将其包含到我的项目中),效果很好。

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

enter image description here

当我看到它的时候,一堆问题就出现了。

  • 在哪里运行这个命令?
  • 是否相当于将“class.krumo.php”文件和其他皮肤文件下载到当前文件夹?
  • 我还需要将该文件包含在我的 PHP 中吗?
  • 或者,也许通过运行这个命令,krumo 成为我机器上 PHP 的内置函数(这样我就可以在任何 PHP 文件上“开箱即用”地使用它)?

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

composer output

在我看来它终于安装了。文件夹下只添加了“composer.lock”和“composer.json”两个文件,class.krumo.php文件无处可寻,当然调用krumo()在测试 PHP 文件中抛出错误call to undefined function krumo.

我需要了解 Composer 包的工作原理。


首先,你需要了解作曲家是什么。这是一个“依赖管理器”。所以管理您的应用程序依赖项,基本上是您的应用程序运行所需的库。

它递归地这样做。因此,如果您的应用程序需要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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“composer”包管理器如何工作? 的相关文章

  • 如何在 Laravel 5.3 中使用标头参数调用 SOAP wsdl?

    I use artisaninweb laravel soap包来运行 SOAP wsdl 文件 为了解析 WSDL 文件 我需要将其与标头参数一起调用 所以换句话来说 首先我需要设置标头参数 然后将其与此参数一起调用 在我的 larave
  • PHP:系统时区设置错误

    我尝试在 MAMP 下的终端中使用 PHP 但出现与系统时区设置相关的错误 我该如何修复这个错误 应用程序 MAMP bin php5 bin php 回声 php PHP 严格标准 PHP 启动 它 依赖系统是不安全的 时区设置 请使用
  • 是否可以倒回 PDO 结果?

    我正在尝试为 PDO 语句的结果编写一个迭代器 但找不到任何回退到第一行的方法 我想避免调用 fetchAll 和存储所有结果数据的开销 first loop works fine foreach statement as result d
  • 上传并 POST 文件到 PHP 页面

    我需要一种上传文件并将其 POST 到 php 页面的方法 php 位于 apache 服务器上 我在我的桌面应用程序中使用这个 C 代码 这是一个c代码的套接字 当我执行程序时 可以得到 文件大小为772906 打开服务器正常 文件大小为
  • 允许跨域ajax请求

    在我的项目中 我需要允许其他人向我的脚本发送 ajax 请求 因此 外部请求可能来自其他网站和域 也可能来自浏览器扩展 我在脚本顶部简单地添加了这两行 让他们执行此操作 header Access Control Allow Origin
  • 这段 PHP 代码是否会导致其他人的 Apache 崩溃?

    preg match all a str repeat a 1000 matches 编辑 稍微更改正则表达式以使其更简单 同时仍然崩溃 我在 PHP 5 3 5 和 Apache 2 0 上运行它 它使服务器崩溃 如果我将 339 更改为
  • android php 连接错误? (添加java代码)

    我试图从 android 应用程序获取位置 纬度 经度 并使用 php 插入数据库 然后提取 10m 半径内的数据 问题是 当我使用智能手机测试代码时 本地测试正常 数据未正确插入 表 usergps 有 3 列 名称 纬度 经度 在我测试
  • PHP - 简单嵌套无序列表 (UL) 数组

    我在 stackoverflow 上看到了这个嵌套 UL 数组问题的一些变体 但我认为我的比其他问题更简单 我正在寻找一个简单的数组循环 它允许无限量的主题 父项 和无限量的项目 子项 例如 ul li Topic li ul li Ite
  • 为什么要使用 XML 解析器?

    I m a somewhat经验丰富的 PHP 脚本编写者 但是我只是专注于解析 XML 和所有这些好东西 我似乎无法理解为什么人们会使用单独的 XML 解析器而不是仅仅使用explode函数 看起来就这么简单 这是我一直在做的事情 假设路
  • PHP“按引用分配”的奇怪现象

    我发现了一个代码片段 其中包括 a b 但没有测试 b 是否确实存在 if isset b 我不确定 PHP 是如何处理这个问题的 所以我进行了一个快速的裸测试 现在我更加感兴趣了 a array a gt b x gt y b array
  • php登录会话登录变量

    我正在学习 php 并已报名参加课程 我的用户登录信息显示如下 我的问题是登录时是否必须在会话中选择我想要的所有字段 我不能只使用 选择电子邮件 并按此拉出所有行 或者我必须在登录时选择所有行吗 例如 将该 uid uid 用于该会话 它是
  • php mail() 函数:如何在 html 消息中显示图像和使用样式[重复]

    这个问题在这里已经有答案了 我目前遇到 php 问题mail 功能 第一个问题是某些电子邮件浏览器 例如 gmail 不会自动显示图像 第二个问题是该消息未使用我输入的样式 p 这是仅适用于 php 的 消息 部分的代码mail 功能 其余
  • 数组和foreach

    posts array message gt this is a test message foreach posts as post echo post message 为什么上面的代码只输出message中的第一个字母 t Thanks
  • 如何在 dompdf 库上启用调试?

    我正在使用 dompdf 库来输出一些报告 我得到了一个文件输出 但我有一些奇怪的行为 如何启用调试报告dompdf https github com dompdf dompdf dompdf new Dompdf something li
  • 如何向用户提供 Ajax POST 响应作为下载?

    我正在尝试在包含帐户信息的现有页面中包含 vCard 导出功能 丑陋的方法包括 1 向同一页面提交表单 处理它并重新渲染整个页面 或者 2 针对页面上的 iframe 进行 GET 我真的很想避免这两种情况 但我可能必须使用 2 来实现目标
  • Laravel 使用 Monolog\Handler\BrowserConsoleHandler 进行日志记录

    How can 拉拉维尔 5的日志记录更改为Monolog Handler BrowserConsoleHandler What doesn t在 Laravel 5 中工作但是does在独立的 PHP 文件中工作 use Illumina
  • WordPress 中的多词搜索不显示搜索结果

    我自定义了一个主题 但在使用多词查询的搜索结果时遇到一些问题 网站上线时间为www aetterworldbydesign com http abetterworldbydesign com 搜索单个单词 http www abetterw
  • UNION SELECT - 循环?还是单个查询?

    如果我使用 UNION 从数据库中进行多个 SELECT 是否被视为一个查询 或多个查询 SELECT column name s FROM table1 UNION SELECT column name s FROM table2 这是否
  • 重定向至 2 页

    我有一个 PHP 页面 我想先将其重定向到一个页面 例如 google com 然后再重定向到另一个页面 例如 bing com 为此 我使用以下方法 header Location http google com header Locat
  • 发帖到 FB 粉丝专页时如何解决“不支持的发帖请求”?

    我有一个可以执行 ff 的脚本 发布指向用户时间线 墙的链接 以管理员身份发布指向用户页面的链接 发布到用户的个人资料页面工作正常 然而 发布到粉丝页面的行为很奇怪 我我能够发帖但我回来了 不支持的发布请求 错误 我已经搜索过这个问题并尝试

随机推荐

  • 在Android中播放Vimeo视频,视频url包含iframe

    你好 我正在开发 Android 应用程序 我想在其中播放 vimeo 视频 我从 json 中的 Api 获得响应 并使用 webview 播放视频 并且播放效果很好 但是 webview 显示非常小 播放的视频也很小 问题是 我希望播放
  • Mysql更改默认引擎

    如何将mysql引擎改为MYISAM 现在我有 INNODB 的 mysql 但我想将引擎更改为 MYISAM 我必须做什么 CREATE TABLE classifieds category id int 11 NOT NULL AUTO
  • laravel新建数据时无法按类别保存计算数据

    模型花费时间 在 laravel 中创建新数据时 无法按类别保存计算数据 public static function findOrCreate plan id data fromDate Carbon now gt subDay gt s
  • Android主项目与库项目-如何在项目之间传递设置

    刚刚开始使用 Android 我正在尝试创建一个具有免费和付费版本的应用程序 我也是 Java 新手 但我成功地在 Eclipse 中创建了一个简单的工作应用程序 它由 2 个主要项目组成 一个是免费版本 一个是付费版本 我还有一个库项目
  • 如何获取字符串中所有出现 Ruby 正则表达式的匹配数据?

    我需要MatchData对于字符串中正则表达式的每次出现 这与中建议的扫描方法不同匹配正则表达式的所有出现 因为这只给了我一个字符串数组 我需要完整的 MatchData 以获取开始和结束信息等 input abc12def34ghijkl
  • 在数据库中存储时间 (hh:mm) 的最佳方法

    我想将时间存储在数据库表中 但只需要存储小时和分钟 我知道我可以只使用 DATETIME 并忽略日期的其他组成部分 但是在不存储超出我实际需要的信息的情况下执行此操作的最佳方法是什么 您可以将其存储为午夜过后分钟数的整数 eg 0 00 0
  • 如果我包含某个包,Flutter Android 应用程序会在启动时崩溃

    最近突然出现了一个问题 只需将依赖项包含在 pubspec yaml 中的 位置 中 例如 dependencies flutter sdk flutter location 1 2 0 lt culprit firebase auth 0
  • 最短的GAS ARM (linux) 程序?

    我曾考虑过学习汇编语言 并决定尝试一下 ARM 我决定使用 GNU 汇编器 主要是因为它可以在我的手机存储库中找到 这样如果我感到无聊 我可以在任何地方尝试汇编 无论如何 我在网上搜索过 但找不到任何有关如何正确退出 ARM Linux 二
  • Java - 为什么强制垃圾收集不释放内存

    我正在生成一个大型数据结构并将其写入硬盘 之后我想摆脱该对象 以减少内存消耗 我的问题是 在强制垃圾收集之后 已用内存量至少与垃圾收集之前一样高 我添加了一个我正在做的最小工作示例 DataStructure data new DateSt
  • 在华为开发者控制台中为华为应用添加关键字

    我需要为用户提供在华为应用程序库中搜索我的应用程序的能力 就像苹果在应用程序商店中的关键字一样 但我在华为开发者控制台中找不到与之等效的内容 华为提供多种广告类型来帮助您增加Android应用的下载量 您可以设置字词或短语 使您的广告与用户
  • 如何将一个表单的实例传递给另一个表单

    我有一个名为form1带有在运行时创建的控件 当我按下表单上的按钮时 另一个表单会加载 称为combat and form1被隐藏 因此只有 1 种形式 combat 可见 当我按下按钮时combat我想要我的form1形成所显示的 但是我
  • jQuery 方法不适用于事件处理程序中的“this”

    当我使用下面的方法时 我无法获取 jQuerythis隐藏该元素 purplePanda click function e this hide 我收到此错误 Uncaught TypeError this hide is not a fun
  • 参数通过 ByVal 传递给 VB.NET 函数并在那里进行操作

    在此 Microsoft 示例中 将 Double 数组传递给函数MultiplyMatricesSequential and MultiplyMatricesParallel 作为参数结果使用ByVal修饰符 http msdn micr
  • Flutter:忽略小部件上的触摸事件

    我希望在其他小部件之上有一个模糊的图像 但是 当我这样做时 我无法与它下面的小部件进行交互 Solution 您可以解决您的交互问题 无法与Widget在你的模糊图像下方 通过包围你的BackdropFilter与IgnorePointer
  • 如何在支持8位无符号整数的设备上合法显示DICOM 16无符号整数?

    我正在 iOS 上开发一个医疗应用程序 iOS 设备仅支持 GL UNSIGNED BYTE 和 GL LUMINANCE 或者通常仅支持每个组件 8 位 现在我有一些灰度图像是 16 位无符号整数 我想显示它们 我发现我们无法显示 16
  • 使用any()和all()检查列表是否包含一组值或另一组值

    我的代码是针对井字游戏并检查平局状态的 但我认为这个问题在一般意义上可能更有用 我有一个代表董事会的列表 它看起来像这样 board 1 2 3 4 5 6 7 8 9 当玩家移动时 他们移动的整数将被替换为他们的标记 x 或 o 我已经进
  • Spring Security 中拦截 url 模式的顺序

    在 appSecurity xml 我有这个 拦截 url 模式 users profile 访问 hasRole VIEW PROFILES 拦截url模式 用户 个人资料 编辑 访问 hasRole EDIT PROFILES 我有一个
  • 在 PHP 中验证 XHTML5?

    背景 I have made the decision to serve my website as application xhtml xml to anyone who will accept it I understand that
  • 什么会导致此自定义 XML ModelBinder 无法反序列化我的 XML POST?

    该模型 public class SimpleUser public string FirstName get set public string LastName get set public string UserName get se
  • “composer”包管理器如何工作?

    我正在尝试安装 Krumo 它说有两种安装方法 我尝试了第一种方法 下载 PHP 文件并将其包含到我的项目中 效果很好 现在我正在尝试第二种方法 使用作曲家 当我看到它的时候 一堆问题就出现了 在哪里运行这个命令 是否相当于将 class