我有一个新的包MyBundle
src/MyVendor/Bundle/MyBundle/
并且在默认控制器中我希望使用位于名为MyClass
的名称空间中的类MyVendor\MyComponent
位于src/MyVendor/Component/MyComponent/src/MyVendor/MyComponent/MyClass.php
我已经尝试过了
use Symfony\Component\ClassLoader\UniversalClassLoader;
$myLoader = new UniversalClassLoader();
$myLoader->registerNamespace(
'MyVendor\\MyComponent\\',
__DIR__.'/../src/MyVendor/Component/MyComponent/src'
);
在app/autoload.php
中但我仍然收到ClassNotFoundException
错误。
要么我缺少一些微妙的东西,要么我的想法完全错误(错误的psr-0目录结构)或者这应该仅通过作曲家的自动加载来完成,例如
"autoload": {
"psr-0": {
"MyVendor\\MyComponent\\":
"src/MyVendor/Component/MyComponent/src"
}
}
和
composer dump-autoload --optimize
在任何一种情况下,我都会感激任何帮助。
谢谢
答案 0 :(得分:0)
好的,我想我已经明白了:
registerNamespace
不应在命名空间\\
$myLoad->register();
所以整个事情看起来像
use Symfony\Component\ClassLoader\UniversalClassLoader;
$myLoader = new UniversalClassLoader();
$myLoader->registerNamespace(
'MyVendor\\MyComponent',
__DIR__.'/../src/MyVendor/Component/MyComponent/src'
);
$myLoader->register();
我仍然希望了解如何使用composer
和dump-autoload