Doctrine Annotation失败

时间:2013-09-19 14:59:00

标签: php symfony doctrine-orm couchdb silex

目前我正在尝试在Silex应用程序中实现Doctrine CouchDB Bundle。有一次,完整站点以我的本地开发堆栈中的500/internal server error结尾。设置断点并使用XDebug和PHPStorm调试它们到目前为止还没有给我带来任何结果。 Apache错误日志为空,PHP错误日志以及error_reporting(-1);仍然不提供任何输出。可能问题是那里的反射类用法。

一切正常, 直到 我尝试使用

中的CouchDB注释
use Doctrine\ODM\CouchDB\Mapping\Annotations as CouchDB;

并在我的文档中使用它们

/** @CouchDB\Document */
class Station
{
    /**
     * @Index
     * @Id
     */
    private $id;

如果我删除上面的CouchDB\,一切正常。但如果我删除它并使用@Id(strategy="ASSIGNED"),我会遇到完全相同的问题。

我试图以几种方式注册Annotations而没有运气。 @Ocramius在聊天中建议我应该简单地覆盖Autoloader,它可以很好地解决其他一些问题,但不适用于那种情况(只是在其他人需要的地方添加它)。

AnnotationRegistry::registerLoader( function( $className ) {
    return class_exists( $className );
} );

2 个答案:

答案 0 :(得分:0)

尝试使用

/**
* @CouchDB\Index
* @CouchDB\Id
*/

而不是

/**
* @Index
* @Id
*/

答案 1 :(得分:0)

您也可以在运行Silex应用程序之前添加此行来解决此问题(可能在index.php中)。

AnnotationRegistry::registerLoader('class_exists');