PHPDocumentor @пример использования

Я не могу понять, как заставить теги PHPCocumentor2 @example работать правильно.

Я пытаюсь разобрать один файл. Мой рабочий каталог /home/developers/domains/example.com, и я пытаюсь разобрать (относительно моего рабочего каталога) simplesamlphp/modules/example/lib/Auth/Process/RoleTrigger.php. Этот файл класса имеет DocBloc, который выглядит так:

/**
 * 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>
&lt;?php
$array = array(</p>
<pre><code>1 =&gt; 'one',
2 =&gt; 'two',</code></pre>
<p>);
print_r($array);
?>
</code></p>

Несколько вложенных тегов <code> и <pre>, которые делают что-то ужасное. Но это другой вопрос.


person Mike    schedule 16.04.2014    source источник


Ответы (1)


Когда я впервые опубликовал этот вопрос, оказалось, что тег @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>]}
 */
person Mike    schedule 26.09.2014