记录PHP的时候会出现奇怪的问题

时间:2011-05-31 00:43:26

标签: php doxygen

当我试图记录我的一个项目时,我遇到了一个奇怪的问题。我有以下代码:

//! Set default ::$action for called controller. If no action is called, default (index) will be set.
$action = isset($_GET[ 'action']) ? $_GET[ 'action'] : 'index';

if ($action) {
    echo 'something 1';
}else{
    echo 'something 2';
}

//! Set default ::$action2 for called controller. If no action is called, default (index) will be set.
$action2 = isset($_GET[ 'action']) ? $_GET[ 'action'] : 'index';

//! Set default ::$action3 for called controller. If no action is called, default (index) will be set.
$action3 = isset($_GET[ 'action']) ? $_GET[ 'action'] : 'index';

Doxygen会产生以下结果: No $action2

如您所见,$ action2缺失。我检查了我的其他文件,看到了同样的问题。从未记录if语句之后的下一件事,但记录之后的事件。如果我从上面的示例中删除if语句,我会获得所有4个变量的文档 - $page$actionaction2action3

我花了很多时间试图了解究竟是什么问题,但没有运气,所以每个建议都受到欢迎。

系统是: 带有Doxygen 1.7.4的Windows XP x64。 (我正在使用Doxygen GUI)

更新 此外,当我在我的代码中有类似的东西时(请注意else语句中缺少if。当我添加}else{}但是它有效。未再次记录下一个$variables,但该更新是关于if/else

if in code

Doxygen将其转换为此Wrong listing of variables

3 个答案:

答案 0 :(得分:5)

查看此http://www.doxygen.nl/manual/autolink.html,其中解释了您在第一个代码段中看到的奇怪现象。

不幸的是,Doxygen不能很好地记录程序化的PHP代码,并且在检查了我自己的doxygen生成的文档之后,我找不到任何函数或方法的任何文档变量,除非它们是定义的类属性。

否则,我认为最大的PHP Doxygen友好项目是Drupal,他们的指导方针是使用Doxygen的评论处理系统来完成的。 http://drupal.org/node/1354

请注意,如果这不是您正在寻找的答案,或者我完全没有目标,请立即通知我,以便删除此答案。

答案 1 :(得分:2)

我认为解析php时doxygen中存在一个bug。 2008年有一个类似的问题已经解决但从未解决过 - https://bugzilla.gnome.org/show_bug.cgi?id=528815

我愿意打赌你的问题是相关的。

我有几点建议:

1)我可能偶然发现了一种解决方法。在块之后添加分号似乎使其行为正确。

if ($action) {
  echo 'something 1';
}else{
  echo 'something 2';
};

但是,我不知道这是否会导致doxygen解析的其他问题。

2)我在我的c ++项目中使用doxygen,但是我的php项目使用了phpdoc,因为我有更好的结果。如果由于政治或实际原因你没有与doxygen联系,你可能会考虑这样做。

答案 2 :(得分:1)

  

仅限PHP:Doxygen需要全部   PHP语句(即代码)被包装   在函数/方法中,否则你   可能遇到解析问题。   Source

您使用的是开源php框架吗?是否可以将代码包装到需要的函数/方法中?