我一直在开发PHP框架,我们想将组件从核心分离成单独的包。像这样:
vendor /
username/frameworkname /
core/
Namespace /
Core /
..Framework core files here
components/
Namespace /
Component
ComponentOne
ClassOne.php
ClassTwo.php
composer.json
LICENSE.txt
README.md
ComponentTwo
ClassOne.php
ClassTwo.php
ClassThree.php
composer.json
README.md
LICENSE.txt
ComponentHopeYouFotIT!
像这样的作曲家需要的核心:
composer require name/framework-core
并且能够将其安装在中
vendor/username/frameworkname/src/core/Namespace/Core/
任何像这样的组件:
composer require name/componentname
并且能够将其安装在:中
vendor/username/frameworkname/src/components/Namespace/Component/
这样我们就不必为任何新组件创建单独的文件夹,并且可以像这样使用:
use NamespaceCoreCoreClass;
use NamespaceComponent{
ComponentOneClassTwo,
ComponentTwoClassOne
};
有可能吗?
我个人曾尝试过ComposerComposer/installers,但无法在Composer.json中找到正确的设置。
"config": {
"vendor-dir": "vendor/username"
},
"repositories": [
{
"type": "package",
"package": {
"name": "frameworkname/componentname",
"version": "master",
"source": {
"url": "https://github.com/username/componentname",
"type": "git",
"reference": "master"
}
},
"require": {
"composer/installers": "~1.0"
}
}
],
您看过Composer自定义安装程序文档吗?它做到了这一点。
tl;dr是,你需要创建一个(非常简单)Composer插件来设置自定义安装位置,文档会非常具体地引导你完成它。
旁白:我对composer/installers
进行了一些实验,我的感觉是它可能不支持自定义类型,但可能允许您为支持的类型设置自定义路径。也就是说:如果你想使用WordPress插件,但将其安装在不同于正常情况的地方,你可以覆盖install-paths
,但你不一定要使用composer/installers
来定义你自己的类型whooptido-type
和自定义安装位置。我极力强调,这一推断是基于今天上午对其进行实验的经验,而不是实际的文件。)