2

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

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

use Doctrine\ODM\CouchDB\Mapping\Annotations as CouchDB;

并在我的文档中使用它们

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

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

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

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

2 回答 2

0

尝试使用

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

代替

/**
* @Index
* @Id
*/
于 2013-09-19T21:06:08.960 回答
0

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

AnnotationRegistry::registerLoader('class_exists');
于 2016-11-16T13:36:59.593 回答