为什么Doctrine 2的自动加载器在抛出异常时会尝试获取Exception实体?

时间:2012-08-16 18:31:30

标签: php exception doctrine-orm

这是相关代码:

throw new Exception("Message");

这是我收到的错误消息:

  

致命错误:require()[function.require]:需要打开失败   'C:\ WAMP \ WWW \ Drupal的7.15 \网站\所有\模块\ dbManip \ \实体Exception.php'   (include_path ='。; C:\ wamp \ bin \ php \ php5.3.13 \ pear \')in   C:\ wamp \ bin \ php \ php5.3.13 \ pear \ Doctrine \ Common \ ClassLoader.php上线   163

我相信Doctrine正在尝试加载Exception类定义,好像它只是我的另一个实体,但据我所知,Exception是PHP原生的(我使用的是PHP) 5.3.13)。我的理论是我在自动加载器方面做错了,但我不确定是什么。以下是我对自动加载器的看法:

use Doctrine\ORM\Tools\Setup;

require_once("Doctrine/ORM/Tools/Setup.php");
Setup::registerAutoloadPEAR();

$classloader = new Doctrine\Common\ClassLoader('Entities', __DIR__);
$classloader->register();

我在这里做错了什么?如果没有doctrine的自动加载器尝试加载Exception实体,如何使用抛出异常?

1 个答案:

答案 0 :(得分:1)

这是PHP正在发挥作用。不是主义。

在命名空间中声明文件时,它将对文件中提到的所有类使用相同的命名空间。要指示Exception类来自根命名空间,必须使其明确。

throw new \Exception("Message");