ClassNotFoundException - 如何在 symfony (2.4.4) 中注册自定义命名空间
Posted
技术标签:
【中文标题】ClassNotFoundException - 如何在 symfony (2.4.4) 中注册自定义命名空间【英文标题】:ClassNotFoundException - how do I register a custom namespace in symfony (2.4.4) 【发布时间】:2014-06-17 02:50:51 【问题描述】:我有一个新的捆绑包MyBundle
在下面
src/MyVendor/Bundle/MyBundle/
在默认控制器中,我希望使用位于名为 MyVendor\MyComponent
的命名空间中的类 MyClass
位于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
无论哪种情况,我都将不胜感激。
谢谢
【问题讨论】:
【参考方案1】:好的,我想我已经想通了:
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
来做到这一点
【讨论】:
以上是关于ClassNotFoundException - 如何在 symfony (2.4.4) 中注册自定义命名空间的主要内容,如果未能解决你的问题,请参考以下文章
ClassNotFoundException:org.sqlite.JDBC
ClassNotFoundException和NoClassDefFoundError
ClassNotFoundException和NoClassDefFoundError