0

Doctrineで使用するために注釈が付けられたエンティティをSymfony2フレームワーク内に実装しました。例えば:

/*
 * class description
 *
 * @ORM\Entity(repositoryClass="Website\ContentBundle\Repository\ContentRepository")
 * @ORM\HasLifecycleCallbacks()
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="type", type="string")
 * @ORM\DiscriminatorMap({"article" = "Article"})
 * @ORM\Table(name="content",indexes={@ORM\index(name="id_UNIQUE",columns={"id"})})
 */
 class Content {
    /** 
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    ...
  }

ソースコードでDoxygenを実行すると、ドキュメントがあまり読みにくくなります。@ORM*シンボルごとにエイリアスを定義しようとしました。たとえば、「ORM = ORM」、「Entity=Entity」などです。しかし、これは機能しません。上記のクラスの場合、Doxygenは

...
ORMEntity(repositoryClass="Website\ContentBundle\Repository\ContentRepository") ORM() ORM("SINGLE_TABLE") ORM(name="type", type="string") ORM({"article" = "Article", "picture_series" = "PictureSeries", "event" = "Event", "invitation" = "Invitation"}) ORMTable(name="content",indexes={ORM(name="id_UNIQUE",columns={"id"})}) 

方法に関して

/**
* sets the given id 
* 
* @param number $id
* @return \Website\ContentBundle\Entity\Content
*/
public function setId($id) {
    $this->id = $id;
    return $this; // fluent interface
}

Doxygenは作成します

setId ($ id)    
   sets the given id

Parameters:
    number  $id 

Returns:

「Returns:」の後に\ Website \ ContentBundle \ Entity \ Contentが表示されないのはなぜですか?

@ORMアノテーションを適切に処理できるようにDoxygenを構成する方法について、誰かがヒントやリンクを教えてくれるかもしれません。

事前にTHX!

4

1 に答える 1

1

質問に関して

なぜ\Website\ContentBundle\Entity\Contentアフターが表示されないのReturns:ですか?

これはおそらく、doxygenコマンドがで始まるため\です。doxygenは、認識されないコマンドを呼び出していると考えているため、おそらくドキュメントから削除され、何もしません。

ALIASES構成ファイルオプションを使用しようとして、正しい方向に進んでいました。ただし、定義する代わりに、ORM=ORMを使用してみてくださいORM=\@ORM。次のエイリアスを定義することで、警告なしにdoxygenによってドキュメント化されたサンプルソースコードを取得しました。

ALIASES  = "ORM=\@ORM"  
ALIASES += "Entity=\\Entity"  
ALIASES += "InheritanceType=\\InheritanceType"  
ALIASES += "DiscriminatorColumn=\\DiscriminatorColumn"  
ALIASES += "DiscriminatorMap=\\DiscriminatorMap"  
ALIASES += "Table=\\Table"  
ALIASES += "Id=\\Id"  
ALIASES += "Column=\\Column"  
ALIASES += "GeneratedValue=\\GeneratedValue"  
ALIASES += "index=\\index"  
ALIASES += "HasLifecycleCallbacks=\\HasLifecycleCallbacks"  
ALIASES += "Repository=\\Repository"  
ALIASES += "ContentRepository=\\ContentRepository"  
ALIASES += "ContentBundle=\\ContentBundle"  
ALIASES += "Website=\\Website"  
ALIASES += "Content=\\Content"  

ここ\\に、実際にはバックスラッシュと文字をそれぞれ\@印刷するためのdoxygenコマンドがあります。\@

ただし、@ORM...ディレクティブはすべて同じ行に表示されることに注意してください。これを回避する方法がわかりません(更新:以下の私の編集を参照してください)。他に何かアイデアはありますか?

最後に、補足として、のドキュメントは次の$idようになります。

* @param $id number 

$idとの順序に注意してくださいnumber。のドキュメントを参照してください\param

編集:これを行う別の方法は、Doctrineに関連する部分\verbatim\endverbatimタグでラップすることです。これにより、クラスの説明の改行が保持され、読みやすくなります。

于 2012-04-24T10:27:44.163 に答える