【发布时间】:2017-12-28 21:03:08
【问题描述】:
我正在学习如何更好地维护我编写的代码。我目前正在处理两个项目 - 两个都在开发中,并且都被推送到 GitHub。
我正在尝试将一个项目包含在另一个项目中(通过在一个项目的 composer.json 文件中声明它是一个依赖项) - 但在包含后,它缺少正确的自动加载配置。
我会稍微解释一下:项目 A 的 composer.json 文件有一个自动加载行,用于将命名空间映射到“src”目录的“psr-4”——运行后一切正常且工作正常:
composer install
然后我可以包含 /vendor/autoload.php 文件并立即开始使用该项目。当我查看该项目的供应商目录中生成的“autoload_psr4.php”文件时,我可以看到该数组包含每个 composer.json 文件的映射命名空间/目录的引用。
当我尝试将项目 A 作为依赖项包含在项目 B 中时出现问题 - 运行 composer install 后一切看起来都正常 - 创建了供应商目录并将文件复制到那里 - 但是当我查看生成的“ 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"
}
谢谢!
【问题讨论】:
标签: php github composer-php autoload