Doxygen странная проблема при документировании PHP if

Я сталкиваюсь с какой-то странной проблемой, пока я пытаюсь документировать мой проект. У меня есть следующий код:

//! 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 генерирует следующее: Нет $ action2

Как вы можете видеть, $ action2 отсутствует. Я проверяю один из моих других файлов и вижу ту же проблему. Следующая вещь после утверждения if никогда не документирована, но после нее документируется. Если я удалю оператор if из приведенного выше примера, я получаю документацию для всех 4 переменных – $page , $action , action3 и action3 .

Я трачу огромное время на то, чтобы понять, что именно не так, но не повезло, поэтому каждое предложение приветствуется.

Система: Windows XP x64 с Doxygen 1.7.4. (Я использую Doxygen GUI)

UPDATE Кроме того, когда у меня есть что-то подобное в моем коде (обратите внимание на недостающее else для оператора if ). Когда я добавляю }else{} это работает. Следующие $variables снова не документируются, но это обновление было связано с if/else .

если в коде

Doxygen преобразует его в это Неверный список переменных

Solutions Collecting From Web of "Doxygen странная проблема при документировании PHP if"

Просмотрите этот http://www.stack.nl/~dimitri/doxygen/autolink.html, который объясняет странность, которую вы видите с первым фрагментом кода.

К сожалению, Doxygen не так хорошо документирует процедурный PHP-код. И после проверки всей моей собственной документации, созданной с помощью doxygen, я не могу найти никаких документированных переменных для любой функции или метода, если они не определены свойства класса.

В противном случае, я думаю, что самый большой дружественный проект PHP doxygen там есть Drupal, их рекомендации были написаны, чтобы использовать систему обработки комментариев Doxygen в полной мере. http://drupal.org/node/1354

Обратите внимание, что если это не тот ответ, который вы ищете, или я полностью не в сети, немедленно сообщите мне, чтобы я мог удалить этот ответ.

Я считаю, что это ошибка в doxygen при анализе php. С 2008 года была аналогичная проблема, над которой работала, но никогда не разрешалась – https://bugzilla.gnome.org/show_bug.cgi?id=528815

Я готов поспорить, что ваша проблема связана.

У меня есть несколько предложений:

1) Возможно, я наткнулся на обходной путь. Добавление точки с запятой после того, как блок, похоже, ведет себя корректно.

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

Тем не менее, я не знаю, приведет ли это к другим проблемам при анализе doxygen.

2) Я использую doxygen для моих проектов на C ++, но я использую phpdoc для своих проектов php, потому что у меня были лучшие результаты с ним. Вы можете подумать о том, чтобы сделать то же самое, если вы не привязаны к doxygen по политическим или практическим причинам.

Только PHP: Doxygen требует, чтобы все инструкции PHP (т.е. код) были обернуты в функции / методы, иначе вы можете столкнуться с проблемами синтаксического анализа. Источник

Используете ли вы PHP-инфраструктуру с открытым исходным кодом? Возможно ли включить ваш код в функции / методы, где это необходимо?