我想知道应用程序自动发现[相关] PHP"包"的最佳方式(如果有办法)是什么?由Composer安装。
我的用例特定情况:
我有一个PHP应用程序,其中包含我的"框架" (因为没有更好的词)。该框架带来了一些基本功能(路由,管理等)。
我正在慢慢构建更高级的功能,比如博客模块。该模块完全独立于其自己的目录中(但显然依赖于该框架)。
我希望这个博客模块是一个自包含的Composer包,以便我可以在我的应用程序的根composer.json文件中有选择地要求包。
现在,我需要框架知道它在那里,以便它可以,例如,正确设置路由并加载模块所需的任何管理功能。
到目前为止我的想法:
我在PHP方面比较有经验,但是"正确的" OOP和自动加载目前有点超出我的知识,所以请原谅是否有内置函数来执行此操作。我甚至不知道谷歌的条款!
我原以为我可能会读取作者在vendor/composer/installed.php
放置的installed.json文件,但我不知道如何设置我的包(例如blog
)所以他们宣布了什么他们是。我希望将来证明这一点,以便我不是在寻找已知的模块名称(或重复供应商或软件包名称),而是寻找包装来说“#y;框架,我知道你!”你可以使用我!"
也许我可以以某种方式指示Composer(通过包的composer.json文件)粘贴在installed.json中的任意键/值对中?
欢迎任何建议,或指示我应该做什么样的Google搜索。
答案 0 :(得分:1)
欢迎来到管理框架依赖关系的世界。
我对auraphp有一些经验,我们处理过类似的问题。您可以阅读博文Composer-Assisted Two-Stage Configuration。
那么我们最终最终在这些需要理解的框架中添加https://github.com/auraphp/Aura.Web/blob/a3870d1a16ecd3ab6c4807165ac5196384da62cd/composer.json#L26-L36这些行来加载框架。
您还可以看到此捆绑包如何通过配置自动加载。
在composer.json
和config/Common.php
(https://github.com/harikt/Aura.Asset_Bundle/blob/223126cedb460e486c4f0b242719c96c14be5385/config/Common.php),请注意我们还有其他开发模式。有关详细信息,请查看https://github.com/auraphp/Aura.Web_Project或https://github.com/auraphp/Aura.Framework_Project
希望有助于查看代码并使用自己的解决方案。