从PHP脚本安装Composer依赖关系 - php

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

当手动管理内容并通过命令行安装时,此解决方案效果很好,但是WordPress显然很受欢迎,因为进入门槛较低。通过命令行安装Composer软件包是入门的主要障碍,因此我着手创建一个列出和安装所有共享依赖项的插件。我已经完成了一部分,代码在Github上,here。

我一直在尝试对Composer进行逆向工程,运气有限。它变成了一片混乱。我真的很好奇,如果有人有在CLI之外使用Composer的经验,或者是否有可能,或者没有所有这些,是否有某种策略可以在不造成太大问题的情况下复制功能。

我能够下载和安装东西,但是我挂了写锁定文件和自动加载器的电话,这两者都是整个过程中至关重要的部分。

tl / dr:

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

参考方案

Composer的工作原理和依赖项都与CLI一样好。 Composer CLI是composer库旨在实现的功能的一种实现。

作曲者实施

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

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

composer install命令首先增强installer

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

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

有关如何进行安装的更多详细信息,请参见InstallCommand类。

兴趣范围

实现目标应该使用的大多数工具是为软件包实现repository。您可能需要研究ArrayRepository和已安装的存储库的变体,以指导您的实现。有了存储库后,您可以将有关软件包的信息告诉作曲家。

Installer::setAdditionalInstalledRepository(RepositoryInterface $repo)

值得注意的项目

元数据浏览器

Packagist-广泛使用composer
Wpackagist-与packagist类似,但为存储库提供伪数据
Satis-使用composer生成与上述示例类似的软件包存储库

安装人员

Embedded composer-将外部依赖项与应用程序依赖项合并

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php:将分钟取整到最近的四分之一小时,然后执行更多操作 - php

最初的问题是这样的:取分钟数->转换为四分之一小时-> 1个四分之一小时为1个单位->输出单位我今天整天都在整理页面,几分钟前我的大脑就停止工作了,我只是不知道如何输出单位数量。我知道在此网站上发布问题会有所帮助。因此,用户输入的分钟数(不是小时和分钟,而是数分钟),站点需要输出单位数量。单位是一个刻钟。分钟总是四舍五入到最近的四分之一小时…

PHP mysqli获取查询返回的第一行的值 - php

我正在使用mysqli从数据库中获取某些数据。我正在使用的查询已设置为仅从数据库返回一行。有没有一种方法可以在不使用while循环的情况下获取该行的值?我知道一个while循环对于返回多于一行的行很有用,但是如果不需要while循环,我想避免这种情况,因为不必要的代码是不好的编程。 参考方案 是的-您可以使用:$row = $result->fetch…