【发布时间】:2014-08-20 13:23:34
【问题描述】:
我正在编写相对复杂的 PHP 应用程序,并且有几个用于类定义的文件,格式如下:
<?php
if(!class_exists("FooBar"))
{
/**
* This is documentation for the class FooBar
*/
class FooBar
{
/**
* Documentation for FooBar's constructor
*/
public function __construct() {
;
}
}
} // class_exists
这是为了防止复杂的类层次结构和应用程序出现多个定义错误。
但是,Doxygen 没有记录任何以这种方式指定的类。注释掉或删除 if(!class_exists()) 语句会导致 Doxygen 正确记录此类,但会在应用程序中引入错误。
有什么方法可以强制 Doxygen 为这些类生成文档?
【问题讨论】:
-
这不是一个答案,这可能需要讨论,当然我不知道你的类层次结构是如何建立的,但在我看来,使用命名空间是一种更好的方法防止多个定义错误...
-
好吧,有条件地定义类(在
if块内)是一个非常非常非常的坏主意。如果您有一个大型/复杂的代码库,那么您应该使用namespaces 来组织您的代码。换句话说,您不应该试图以某种方式强迫 Doxygen 处理不良做法。你不应该一开始就使用不好的做法。 -
命名空间不能解决即使是非常简单的类层次结构的双重包含,否则我会使用它们。如果我有基类 A,子类 B 和 C,然后在我的应用程序中同时使用 B 和 C,结果是类 A 的包含语句被调用两次,导致双重定义错误。
-
@MarcusHarrison 好吧,如果你在一个文件中定义一个类,那么无论如何它不应该被包含超过一次。隐藏写得不好的代码并不能解决问题。
-
@MarcusHarrison 啊。自动加载可以解决这个问题。 This article 解释得很好。