gpt4 book ai didi

php - 从 PHP 脚本安装 Composer 依赖项

转载 作者:行者123 更新时间:2023-12-01 23:12:44 29 4
gpt4 key购买 nike

我花了一段时间寻找一种在 WordPress 插件开发中管理 Composer 依赖关系的好方法。在 WordPress 插件中包含依赖项很容易,但如果两个单独的插件都有composer.json/vendor 目录,并且包含相同的包,则会发生冲突,一切都会崩溃。因此,我的工作解决方案本质上是提供一个 API,允许插件将其依赖项推送到中央包管理器中。

这个解决方案在手动管理内容并通过命令行安装时工作得很好,但 WordPress 显然很受欢迎,因为进入阈值较低。通过命令行安装 Composer 软件包是一个很高的入门阈值,因此我开始创建一个插件来列出并安装所有共享依赖项。我已经完成一半了,代码在Github上,here .

我一直在尝试对 Composer 进行逆向工程,但运气大多有限。它变成了一片困惑。我真的很好奇是否有人有在 CLI 之外使用 Composer 的经验,或者如果可能的话,或者排除所有这些,是否有任何策略可以在不出现太大问题的情况下复制功能。

我能够下载和安装东西,但我沉迷于编写锁定文件和自动加载器,这两者都是整个过程中非常关键的部分。

tl/dr:

  • Composer 被编写为可通过 CLI 打包和运行。
  • 我想在 WordPress 插件中使用或模仿其功能。
  • 可能吗?
  • 有人这样做过吗?有我可以看看的现有项目吗?
  • 我特别关心自动加载器和锁定文件的创建,但我对安装程序的实现也不满意。

最佳答案

Composer 的工作方式与 CLI 一样,都是依赖项。 Composer CLI 是 Composer 库设计目的的一种实现。

Composer 实现

应用程序本身通过 factory class 引导 composer .

Factory::create(IOInterface $io, $config = null, $disablePlugins = false);

composer install 命令首先启动 installer

Installer::create(IOInterface $io, Composer $composer);

从那里它设置一些运行时变量(无论是声明的还是默认的),并进入 Installer::run() 方法。

请参阅InstallCommand类以获取有关如何进行安装的更多详细信息。

感兴趣的领域

为了实现您的目标,您应该做的大部分事情是为您的包实现一个存储库。您可能想查看ArrayRepository以及已安装存储库的变体来指导您的实现。一旦你有了一个存储库,你就可以告诉composer你的包。

Installer::setAdditionalInstalledRepository(RepositoryInterface $repo)

值得注意的项目

元数据浏览器

  • Packagist - 广泛使用composer来实现它提供的所有功能
  • Wpackagist - 与 packagist 类似,同时为存储库提供伪数据
  • Satis - 使用composer生成类似于上面示例的包存储库

安装程序

关于php - 从 PHP 脚本安装 Composer 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20736520/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com