我使用子树中的捆绑包,因此我无法修改结构或其位置。我目前正试图将它包含在自动加载过程中,并且未能找到"未找到的类"错误信息。 目前,我的项目树(由Symfony 3.2制作)是:
|- app
|- src
|- MyappBundle
|- external
|- Author
|-UserBundle
|- Controller
|- [...]
|- AuthorUserBundle.php
AuthorUserBundle.php包含:
namespace Author\UserBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AuthorUserBundle extends Bundle
{
}
要包含此捆绑包,我在app / AppKernel.php中添加了
new Author\UserBundle\AuthorUserBundle(),
我还在AnnotationRegistry::registerLoader
之前添加到了app / autoload.php:
$loader->add('Author',__DIR__.'/../src/external');
我不掌握命名空间的重叠,特别是关于通话的深度,但我尝试了autoload.php中的许多变体(如' /../ src / external / Author')或AppKernel.php(作者\ UserBundle \ AuthorUserBundle \ AuthorUserBundle())以相同的错误消息结束所有"未找到类"。
我错过了什么?
抱歉新手问题,我先试着一个人,谢谢你的时间。
P.S。 :external
目录无法删除,git子树进程不允许在非空目录中运行。
答案 0 :(得分:2)
您不应该使用git子树来包含第三方代码。向composer.json
添加AuthorUserBundle
,其中包含所有需要的自动加载和依赖项。一个最小的示例(如果您仍然使用Symfony 2.7 / 2.8,则将^3.0
替换为^2.7
):
{
"name": "author/user-bundle",
"license": "proprietary",
"type": "library",
"require": {
"symfony/framework-bundle": "^3.0"
},
"autoload": {
"psr-4": {
"Author\\UserBundle\\": ""
},
}
}
并在主项目中将其作为private repository。请添加git标签并关注semantic versioning。
假设您的捆绑包被称为author/user-bundle
(作曲家名称),请将以下内容添加到您的项目中composer.json
:
{
"require": {
"author/user-bundle": "^1.0"
},
"repositories": [
{
"type": "vcs",
"url": "git@git.example.author/user-bundle.git"
}
]
}
编辑1:为AuthorUserBundle存储库添加了composer.json。
答案 1 :(得分:0)
我会尝试使用addPsr4
方法
$loader->addPsr4('Author\\UserBundle\\', __DIR__.'/../src/external/Author/UserBundle');