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 はチャットで、オートローダーを単にオーバーライドするべきだと提案しました。これは、他のいくつかの問題を乗り越えるのにうまく機能しましたが、その場合はそうではありませんでした (他の誰かがそれを必要とする場合に備えて、ここに追加するだけです)。

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

2 に答える 2

0

Silex アプリケーション (おそらく index.php) を実行する前に、この行を追加することでこれを解決することもできます。

AnnotationRegistry::registerLoader('class_exists');
于 2016-11-16T13:36:59.593 に答える
0

使ってみて

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

それ以外の

/**
* @Index
* @Id
*/
于 2013-09-19T21:06:08.960 に答える