Как отобразить полные docblocks для унаследованных методов в phpDocumentor?

#inheritance #documentation #abstract #phpdoc

#наследование #Документация #аннотация #phpdoc

Вопрос:

В настоящее время у меня есть код, в котором есть абстрактный родительский класс, который определяет некоторые конкретные методы, а дочерние классы расширяют этот родительский класс и будут использовать конкретные методы. Например:

 <?php

abstract class abstract_class {
    /**
    *   I document foo.
    */
    public function foo() {
        echo "I am the foo function!";
    }
}

class child_class {
    /**
    *   I document bar.
    */
    public function bar() {
        echo "I am the bar function!";
    }
}

?>
  

В моей документации для child_class я вижу, что моя функция bar() хорошо документирована, как в кратком описании метода, так и в подробном описании метода … но моя функция foo(), которая была унаследована, указана только как унаследованная, и мне нужно перейти по ссылке, чтобы увидеть ее полную документацию и дажепросто посмотрите, что он вызывается этой функцией. Пример того, что я вижу, показан на изображении здесь. (Я не могу поместить изображение здесь, потому что я новый пользователь …)

Согласно документации PhpDocumentors, я должен каким-то образом видеть Docblock, но я не знаю, как это сделать:

Новое в версии 1.2.0, docblocks наследуются дочерними классами, переменными и методами.

Я искал повсюду переключатель или что-то еще для запуска при вызове phpdoc из командной строки, но ничего не нашел.

Как я могу отобразить нужную мне информацию так, как я хочу?

Комментарии:

1. К сожалению, я начинаю думать, что это невозможно. Это меня поражает, но, похоже, так оно и есть.

Ответ №1:

Если вы не переопределите метод в дочернем классе, то я думаю, что структура различных выходных преобразователей покажет вам только список унаследованных методов. Некоторые конвертеры будут включать по крайней мере краткое описание метода из docblock (HTML: Smarty:PHP), тогда как другие этого не делают (HTML:frames:default).

Нет, нет конфигурации среды выполнения или переключателя, которые можно использовать для изменения этого поведения. Это просто вопрос того, как записываются выходные преобразователи для структурирования результирующего документа.

Теперь, если бы вы повторно объявили метод снова в дочернем классе, будь то переопределение родительского метода или просто фактическая реализация конкретного метода для абстрактного родительского метода, тогда многие аспекты, которые вы написали в docblock родительского метода, были бы видны в docblock дочернего метода.документ.

Следуя вашему примеру, это может быть лучше всего продемонстрировано абстрактным классом, имеющим абстрактный метод, и он полностью документируется. Затем дочерний класс реализует метод, но не имеет собственного docblock (потому что по соглашению он должен полностью соответствовать описанию, содержащемуся в docblock абстрактного родительского метода). Это наследование документа должно быть видно, например, по наследованию тегов param и return.

Такое поведение наследования также видно в IDE, таких как Eclipse. Если phpDocumentor не показывает такого рода наследование в документах дочернего класса, это ошибка.

Комментарии:

1. Спасибо ashnazg — Часть, в которой вы говорите о HTML: Smarty: PHP для меня новинка. Есть ли где-нибудь еще информация о разных конвертерах, которые я могу попробовать? HTML: Smarty: PHP далеко не так хорош, как HTML:default: по умолчанию в макете, но он лучше показывает наследование. Есть какие-либо рекомендации по другим параметрам?

2. Я действительно обнаружил, что конвертер HTML: Smarty:HandS сделал БОЛЬШУЮ часть того, что я хочу сделать, для других заинтересованных сторон. Теперь, чтобы просто выяснить, как изменить порядок на боковой панели, чтобы классы были сверху…

Ответ №2:

Попробуйте Docblox. Это похоже, но результат — AJAX gold. Единственное, чего не хватает, это веб-интерфейса. Я установил его как пакет pear.

Комментарии:

1. Я мог бы изучить это, но PHPdocumentator работает для меня просто отлично, за одним исключением. Все данные уже есть и существуют, их просто нужно отобразить. Я уверен, что есть просто функция или переключатель, которые мне нужно где-то активировать.