phpDocumentor @пример использования
Кажется, я не могу понять, как заставить теги PHPCocumentor2 @example
работать правильно.
Я пытаюсь проанализировать один файл. Мой рабочий каталог /home/developers/domains/example.com
, и я пытаюсь проанализировать (относительно моего рабочего каталога) simplesamlphp/modules/example/lib/Auth/Process/RoleTrigger.php
. Этот файл класса содержит документ, который выглядит следующим образом:
/**
* Trigger Role on User from Configuration.
*
* @example "RoleManager.usage.example.php" Test Example
*/
public function process() { /* ... */ }
Когда я запускаю команду для разбора только этого файла с максимальной подробностью (phpdoc -f simplesamlphp/modules/example/lib/Auth/Process/RoleTrigger.php -t httpdocs/test -vvv
) PHPDoc указывает, что текущий корневой каталог проекта /home/developers/domains/example.com/simplesamlphp/modules/example/lib/Auth/Process/
, поэтому, согласно документации, это указывает, что файл примера RoleManager.usage.example.php
должен находиться либо на том же уровне каталога анализируемого файла, либо в каталоге examples
текущего корневого каталога проекта (который будет /home/developers/domains/example.com/simplesamlphp/modules/example/lib/Auth/Process/examples/
).
Однако, как бы я ни старался, я, похоже, не могу заставить пример отображаться в сгенерированной документации.
Все, что я, кажется, получаю, это в правой части сгенерированной страницы:
Tags
example Test Example
Без гиперссылки, или отображения содержимого файла, или чего-либо еще. Просто "Описание" ни с чем другим.
Я попытался использовать <code>
, но несколько строк с несколькими уровнями отображают неработающий html, который также бесполезен:
Это:
/**
* Test Doc
*
* <code>
* <?php
* $array = array(
* 1 => 'one',
* 2 => 'two',
* );
* print_r($array);
* ?>
* </code>
*/
Отображает следующий HTML-код:
<p><code>
<?php
$array = array(</p>
<pre><code>1 => 'one',
2 => 'two',</code></pre>
<p>);
print_r($array);
?>
</code></p>
Несколько вложенных <code>
и <pre>
тегов, которые отображают что-то ужасное. Но это уже другой вопрос.
1 answers
Когда я впервые опубликовал этот вопрос, оказалось, что тег @example
не был реализован (пока) в phpDocumentor v2. Это печальная правда для ряда тегов, поскольку phpDocumentor v2 построен на совершенно иной основе, чем v1, и теги были/все еще переносятся в новую систему.
Вскоре после того, как я опубликовал вопрос, я связался с сообществом Git, работающим над проектом, и внес небольшой вклад в задачу реализации @example
метка.
В настоящее время тег работает так, как ожидалось и определено в документации PHPDoc, до T (насколько я могу проверить).
Http://www.phpdoc.org/docs/latest/references/phpdoc/tags/example.html
Мне приходит в голову, что, поскольку теперь это работает должным образом, этот вопрос (и ответ), скорее всего, больше не нужны. Однако я хотел убедиться, что обновил его, чтобы кто-нибудь не наткнулся на него и не запутался.
Для полноты картины, во время при написании синтаксис выполняется следующим образом:
/**
* @example [location] [<start-line> [<number-of-lines>] ] [<description>]
*/
/**
* Or inline {@example [location] [<start-line> [<number-of-lines>] ] [<description>]}
*/