我在Doctrine 2项目中添加了Classloader时遇到了一些问题。 我有这样简单的目录结构:
每个php子目录都属于自己的命名空间(与目录名称相同) 我想使用上面提到的类加载器来加载这三个不同的包,所以我的引导程序看起来像这样:
$classLoader = new \Doctrine\Common\ClassLoader('Doctrine', $lib );
$classLoader->register();
$responsesCL = new \Doctrine\Common\ClassLoader('Responses', __DIR__.'/../php');
$responsesCL->register();
$entitiesCL = new \Doctrine\Common\ClassLoader('Entities', __DIR__.'/../php');
$entitiesCL->register();
$servicesCL = new \Doctrine\Common\ClassLoader('Services', __DIR__.'/../php');
$servicesCL->register();
粗体DIR实际上是__ DIR __
php常量。
现在,我在我的服务包中引用实体,这就是问题开始的地方,由于某些原因我因文件未找到问题而得到错误,例如:
需要打开失败 '/var/www/projects/PlatformManagement/config/../php/Services/Entities/User.php' (include_path中= ':在/ usr /共享/梨:在/ usr /共享/ PHP') 在 /usr/share/pear/Doctrine/Common/ClassLoader.php 的 在线 148
不知何故,路径中还有额外的“服务”,显然它不是有效路径。我有点疑惑为什么那个额外的目录呢?我试图检查所有命名空间,调用,它们都没问题。
我需要另外一双眼睛看,我假设我在这里遗漏了一些明显的东西,但无法发现它:|
哦,这是关于fedora的最新Doctrine 2 Beta(4)和php 5.3.3,如果有任何帮助的话。
谢谢, 格雷格
答案 0 :(得分:0)
是否有类似Doctrine \ ORM \ Tools \ Setup :: registerAutoloadPEAR()的内容?
Doctrine的Autoloader可能会产生意外行为,因为它会根据PHP包含路径加载类。
参考this
在您的情况下,实体应该
namespace Entities;
声明,而不是其他任何内容。
并使用下面的实体,
use Entities\User;
new User;