2013-09-19 3 views
2

В настоящее время я пытаюсь реализовать Doctrine CouchDB Bundle в приложении Silex. В какой-то момент весь сайт заканчивается на 500/internal server error в моем стеке dev. Установка контрольных точек и отладка их с помощью XDebug и PHPStorm пока не привела к каким-либо результатам. Журналы ошибок Apache пустые, журналы ошибок PHP также и error_reporting(-1); все еще не дают никакого вывода. Вероятно, проблема заключается в использовании класса отражения.Doctrine Annotation failing

Все работает хорошо, до Я пытаюсь использовать CouchDB аннотаций из

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); 
}); 

ответ

0

Попробуйте использовать

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

вместо

/** 
* @Index 
* @Id 
*/ 
+0

Спасибо за ваш ответ. К сожалению, это не работает. Я не уверен, но, может быть, проблема в том, что я как-то не загрузил необходимый класс аннотации (маловероятно, поскольку я 'use'-включил его). Точка также заключается в том, что в CouchDB Annotations следует просто выровнять аннотации Doctrine по умолчанию. Так что - теоретически - он должен работать без 'CouchDB' и в« Индексе ». – kaiser

0

Вы также можете решить эту проблему путем добавления этой строки, прежде чем запустить Silex приложения (вероятно, в index.php).

AnnotationRegistry::registerLoader('class_exists');