【问题标题】:What is the correct way to write PHPDocs for constants?为常量编写 PHPDocs 的正确方法是什么?
【发布时间】:2011-10-06 01:41:08
【问题描述】:

我有这个代码:

/**
 * Days to parse
 * @var int
 */
const DAYS_TO_PARSE = 10;
...

我不认为使用@var 对常量是正确的,我没有看到任何@constant PHPDoc 标记。这样做的正确方法是什么?

【问题讨论】:

标签: php phpdoc


【解决方案1】:

The PHP-FIG suggests using @var for constants.

7.22。 @var

您可以使用@var 标签来记录以下的“类型” “结构元素”:

  • 常量,包括类和全局范围
  • 属性
  • 变量,包括全局和局部范围

语法

@var ["Type"] [element_name] [<description>]

【讨论】:

  • 那么,我们用来记录“恒定”事物的“变量”本质上是什么?
  • 截至 2017 年使用 @const 将正确输出我的描述,但 @var 不会为类常量输出任何内容。
  • 这已经过时了。当前版本的 PSR-5 草案不再具体提及这一点。我认为常量不需要特定的类型提示,因为它们的类型是不可变的并且总是可以推断出来的:stackoverflow.com/a/50945077/752110
  • @Yogarine 常量可能不需要类型提示,但可能需要记录常量的用途
  • @BradKent 当然。在这种情况下,只需添加一个没有任何注释的文档块就足够了。
【解决方案2】:

@const不是正确答案。

它列出的唯一“官方”位置是 phpdoc.de,但那里的规范只达到了 1.0beta,并且该站点还包含诸如 @brother@sister 之类的标签,我从未见过使用过之前,因此对该网站的整体信任度有所降低;-) 事实上 标准一直是 phpDoc.org。

简而言之,即使某些非官方标准确实提到了它,但如果文档生成器不支持它,那么它就不值得使用。

@var 现在是正确的 ,一旦 PSR(上面列表中的最后一个链接)没有草稿,并且是 phpDocumentor、Doxygen、APIGen 和其他人理解 PHPDoc 的基础,那么 @ 987654330@ 是正确的,它是@var 的继任者

【讨论】:

  • 事实上,对于 IDE 来说这似乎并不重要,例如 PHPStorm 总是使用实际的代码值来找出类型(因为它必须分配一个值)。
【解决方案3】:

不需要注释常量的类型,因为类型总是:

  • 标量或数组
  • 在声明时已知
  • 不可变

@const 也不是 PHPDoc 标准的一部分。 PHP-FIG 建议 @var 但这不受 PHPDoc 支持,也不会添加任何您无法从声明本身推断出的信息。

因此,为了便于阅读,我建议只使用普通的 PHPDoc 文档块来记录您的常量:

class Foo
{
    /**
     * This is a constant.
     */
    const BAR = 'bar';
}

它会在您生成 PHPDocs 时描述常量,同时保持 cmets 的清洁和可读性。

【讨论】:

    【解决方案4】:

    我使用 Netbeans。当使用这种格式时,它将解析 phpDoc 中的全局和类常量:

    /** @const Global constant description */
    define('MY_CONST', 10);
    
    class MyClass
    {
        /** @const Class constant description */
        const MY_CONST = 10;
    }
    

    【讨论】:

    • 你不能把@const留给Netbeans中的类常量吗?
    • 我刚刚在 Netbeans 8 中进行了测试,并且能够在全局和类常量声明中省略 @const
    • 在我的例子中,我添加了“/** 类常量描述 */”并且它起作用了。
    【解决方案5】:

    以下proposition尊重the official documentation syntax

    class Foo
    {
        const
            /**
             * @var string Should contain a description
             */
            MY_CONST1 = "1",
            /**
             * @var string Should contain a description
             */
            MY_CONST2 = "2";
    
    }
    

    【讨论】:

      【解决方案6】:

      要将它们放入 phpDoc,请使用:

      @const THING
      

      通常的构造:

      @const[ant] label [description]
      

      【讨论】:

      • define() 发起的类常量和全局常量的区别不是吗?我猜@const 是用来标注后者的。
      • 是前者。我刚刚记录了一个类常量,并且我生成的 phpdocs 正确地包含了描述。截至 2017 年 4 月,英文文档仍然没有 @const!
      • @const 无效并且在 PHPDocumentor 中不存在。使用@var
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2010-11-22
      • 2017-04-20
      相关资源
      最近更新 更多