32

我正在玩 PHPDoc,并意识到您可以使用 markdown 向 DocBlock 添加一些格式。特别是,我注意到您可以使用反引号来突出显示内联代码。

但是,我似乎无法弄清楚如何将代码块添加到 DocBlock,因为使用 4 个空格似乎不起作用。

我也尝试过使用<code>and <pre>,虽然这些标签确实出现在生成的文档中,但其中的代码会被 HTML 注释注释掉。

例如,这个 DocBlock:

/**
 * This is a test DocBlock
 *
 * <pre>
 *     <?php
 *         echo('hi');
 *     ?>
 * </pre>
 *
 * @return object[] An array of objects.
 */

生成此 HTML:

<pre>
    <!--?php echo('hi'); ?-->
</pre>

我哪里错了?如何将代码块添加到我的 DocBlock?

4

4 回答 4

30

phpdocumentor 使用 markdown 的 github 变体。

添加代码的正确方法是:

/**
 * This is a test DocBlock
 *
 * ```php
 * echo('hi');
 * ```
 *
 * @return ...
 */
于 2014-04-03T13:58:54.153 回答
17

phpDocumentor 手册说对于描述

你可以根据Markdown来格式化你的文本,更具体地说是Github 风格的 Markdown。使用这种格式很容易使您的文本加粗,添加内联代码示例或轻松生成指向其他站点的链接。— DocBlocks 内部

PSR-5 PHPDoc说的是描述

任何解析描述的应用程序都建议支持该字段的 Markdown 标记语言,以便作者可以提供格式和表示代码示例的清晰方式。—描述

标签

必须支持 Markdown 作为格式化语言。由于 Markdown 的性质,在同一行或后续行开始标签的描述并以相同的方式解释它是合法的。—标签

使用 Github-Flavored Markdown 的 PHPDoc 示例

/**
 * This is a Summary.
 *
 * This is a Description. It may span multiple lines
 * or contain 'code' examples using the _Markdown_ markup
 * language.
 *
 * It's very easy to make some words **bold** and other 
 * words *italic* with Markdown. You can even 
 * [link to Google!](http://google.com).
 *
 * Here's an example of how you can use syntax 
 * highlighting with GitHub Flavored Markdown:
 *
 * ```
 * <?php
 * echo "Hello, world.";
 * ?>
 * ```
 * 
 * You can also simply indent your code by four spaces:
 * 
 *     <?php
 *     echo "Hello, world.";
 *     ?>
 *
 * @see Markdown
 *
 * @param int        $parameter1 A parameter description.
 * @param \Exception $e          Another parameter description.
 *
 * @\Doctrine\Orm\Mapper\Entity()
 *
 * @return string
 */
function test($parameter1, $e)
{
    ...
}
于 2016-10-14T07:04:12.143 回答
11

我认为您不应该添加<?php标签,我认为它会在解析时将其剥离。将其视为 phpdoc,您可能可以一起跳过它。

尝试

 * <code>
 *         echo('hi');
 * </code>
于 2012-07-31T13:37:54.903 回答
2

您应该能够使用:-

/**
 * This is a test DocBlock
 *
 * <pre>
 *     &lt;?php
 *         echo('hi');
 *     ?&gt;
 * </pre>
 *
 * @return object[] An array of objects.
 */
于 2012-07-31T13:38:10.283 回答