0

我已经在 Symfony2 框架中实现了实体,这些实体被注释以供 Doctrine 使用。例如:

/*
 * 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:

为什么在“返回:”之后不显示 \Website\ContentBundle\Entity\Content?

也许有人可以给我一个关于如何配置 Doxygen 的提示或链接,以便它可以适当地处理 @ORM 注释。

提前谢谢!

4

1 回答 1

1

关于问题

为什么\Website\ContentBundle\Entity\Content后面不显示Returns:

这可能是因为 doxygen 命令以 a 开头\,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.

编辑:这样做的另一种方法是将教义相关部分包装在\verbatim\endverbatim标签中。这将保留您的类描述中的换行符,这将更具可读性。

于 2012-04-24T10:27:44.163 回答