我正在学习如何更好地维护我编写的代码。我目前正在处理两个项目 - 两个都在开发中,都被推送到GitHub。
我试图将一个项目包含在另一个项目中(通过在一个项目的composer.json文件中声明它是一个依赖项) - 但是在它包含之后,它缺少正确的自动加载配置。
我会更好地解释一下:Project A的composer.json文件有一个自动加载行,用于" psr-4"将命名空间映射到" src"目录 - 运行后一切都很好并且正常工作:
composer install
然后我可以包含/vendor/autoload.php文件并立即开始使用该项目。当我查看生成的" autoload_psr4.php"在该项目的供应商目录中的文件中,我可以看到该数组包含每个composer.json文件的映射名称空间/目录的引用。
当我尝试将项目A作为依赖项包含在项目B中时出现问题 - 在运行composer安装后一切看起来都有效 - 创建供应商目录并将文件复制到那里 - 但是当我查看生成的&时#34; autoload_psr4.php"项目B中的文件缺少每个项目A的composer.json文件的映射名称空间/目录。
有人能指出我可能缺少的方向让自动加载线继续进入项目B吗?
这是两个composer.json文件:
项目A:
{
"name": "jfreynik/hydra-net",
"description": "Network classes for the Hydra framework.",
"type": "library",
"keywords": [ "http", "net", "rest" ],
"license": "MIT",
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-4": {
"hydra\\net\\": "src/"
}
}
}
项目B:
{
"name": "jfreynik/simple-mvc",
"description": "A pretty simple MVC framework for building websites.",
"type": "framework",
"keywords": [ "MVC", "Website Framework" ],
"license": "MIT",
"repositories": [
{
"type":"package",
"package": {
"name": "jfreynik/hydra-net",
"version":"*-dev",
"source": {
"url": "https://github.com/jfreynik/hydra-net.git",
"type": "git",
"reference":"master"
}
}
}
],
"require": {
"jfreynik/hydra-net": "*-dev"
},
"minumum-stability": "dev"
}
谢谢!
答案 0 :(得分:0)
问题在于我将项目A作为“包”包含在项目B中。我相信不会扫描“packages”中包含的composer.json文件。 (如果我错了,请纠正我) - 通过将Project B的composer.json文件更改为引用项目A为“vcs”,然后自动加载再次工作。 - 这是Project B的调整后的composer.json文件。
{
"name": "jfreynik/simple-mvc",
"description": "A pretty simple little MVC framework for building websites.",
"type": "framework",
"keywords": [ "MVC", "Website Framework" ],
"license": "MIT",
"repositories": [
{
"type":"vcs",
"url": "https://github.com/jfreynik/hydra-net"
}
],
"require": {
"jfreynik/hydra-net": "dev-master"
},
"minumum-stability": "dev"
}
我真的很难找到工作示例,因为我真的只是开始使用作曲家,而在此之前只包含了packagist的专业包。我有很多东西需要学习(甚至在术语方面) - 所以如果有人能够以正确的方式添加其他相关信息以便将1个开发项目包含在另一个开发项目中,我将接受您的回答。