自动发现作曲家包

时间:2014-06-20 12:05:31

标签: php json composer-php

我想知道应用程序自动发现[相关] PHP"包"的最佳方式(如果有办法)是什么?由Composer安装。

我的用例特定情况:

我有一个PHP应用程序,其中包含我的"框架" (因为没有更好的词)。该框架带来了一些基本功能(路由,管理等)。

我正在慢慢构建更高级的功能,比如博客模块。该模块完全独立于其自己的目录中(但显然依赖于该框架)。

我希望这个博客模块是一个自包含的Composer包,以便我可以在我的应用程序的根composer.json文件中有选择地要求包。

现在,我需要框架知道它在那里,以便它可以,例如,正确设置路由并加载模块所需的任何管理功能。

到目前为止我的想法:

我在PHP方面比较有经验,但是"正确的" OOP和自动加载目前有点超出我的知识,所以请原谅是否有内置函数来执行此操作。我甚至不知道谷歌的条款!

我原以为我可能会读取作者在vendor/composer/installed.php放置的installed.json文件,但我不知道如何设置我的包(例如blog)所以他们宣布了什么他们是。我希望将来证明这一点,以便我不是在寻找已知的模块名称(或重复供应商或软件包名称),而是寻找包装来说“#y;框架,我知道你!”你可以使用我!"

也许我可以以某种方式指示Composer(通过包的composer.json文件)粘贴在installed.json中的任意键/值对中?

欢迎任何建议,或指示我应该做什么样的Google搜索。

1 个答案:

答案 0 :(得分:1)

欢迎来到管理框架依赖关系的世界。

我对auraphp有一些经验,我们处理过类似的问题。您可以阅读博文Composer-Assisted Two-Stage Configuration

那么我们最终最终在这些需要理解的框架中添加https://github.com/auraphp/Aura.Web/blob/a3870d1a16ecd3ab6c4807165ac5196384da62cd/composer.json#L26-L36这些行来加载框架。

您还可以看到此捆绑包如何通过配置自动加载。

composer.json

https://github.com/harikt/Aura.Asset_Bundle/blob/6ea787979390e69bf6ecb1e33ce00ed90f306e2f/composer.json#L21-L27

config/Common.phphttps://github.com/harikt/Aura.Asset_Bundle/blob/223126cedb460e486c4f0b242719c96c14be5385/config/Common.php),请注意我们还有其他开发模式。有关详细信息,请查看https://github.com/auraphp/Aura.Web_Projecthttps://github.com/auraphp/Aura.Framework_Project

希望有助于查看代码并使用自己的解决方案。