为常量编写PHPDOC的正确方法是什么?

为常量编写PHPDOC的正确方法是什么?,php,phpdoc,Php,Phpdoc,我有以下代码: /** * Days to parse * @var int */ const DAYS_TO_PARSE = 10; ... 我不认为对常量使用@var是正确的,我也没有看到任何@constantPHPDoc标记。正确的方法是什么?要让他们进入phpDoc,请使用: @const THING 通常构造: @const[ant] label [description] @const不是正确答案 它不是旧式phpDocumentor文档的一部分: 它不是当前phpDo

我有以下代码:

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

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

要让他们进入phpDoc,请使用:

@const THING
通常构造:

@const[ant] label [description]

@const
不是正确答案

  • 它不是旧式phpDocumentor文档的一部分:
  • 它不是当前phpDocumentor文档的一部分:
  • 它不在维基百科的标签列表中:
  • PHP-FIG PSR草案中未列出:
它列出的唯一“官方”位置是phpdoc.de,但是那里的规范只达到了1.0beta,而且该站点还包括像
@brother
@sister
这样的标签,这是我以前从未见过的,因此对该站点的整体信任度有所降低;-)事实上的 标准一直是phpDoc.org

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


@var
目前是正确的,一旦PSR(上面列表中的最后一个链接)脱离草案,并且是phpDocumentor、Doxygen、APIGen和其他人理解PHPDoc的基础,那么
@type
将是正确的,它是
@var

的继承者,我使用Netbeans。使用此格式时,它将解析phpDoc的全局和类常量:

/** @const Global constant description */
define('MY_CONST', 10);

class MyClass
{
    /** @const Class constant description */
    const MY_CONST = 10;
}

7.22<代码>@var

您可以使用
@var
标记记录以下内容的“类型” “结构要素”:

  • 常量,包括类和全局范围
  • 性质
  • 变量,包括全局范围和局部范围
语法

@var[“Type”][元素名称][]

以下方面:

class-Foo
{
常数
/**
*@var字符串应包含说明
*/
MY_CONST1=“1”,
/**
*@var字符串应包含说明
*/
MY_CONST2=“2”;
}

无需注释常量的类型,因为类型始终为:

  • 标量或数组
  • 申报时已知
  • 不变的
@const
也不是PHPDoc标准的一部分。PHP-FIG建议使用
@var
,但PHPDoc并不支持这一点,也不会添加任何您无法从声明本身推断出的信息

因此,为了可读性,我建议只使用普通的PHPDoc docblock来记录常量:

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

当您生成PHPDOC时,它将描述常量,同时保持注释的干净性和可读性。

至于
define
而言:我看到了一个,define是用于独立常量的,我正在寻找@Elzo
const FOO=1的类常量可能重复也可以在类上下文之外工作。这家伙正在使用@access private,但我不知道您可以限制constants的可见性这一事实。类常量和由define()启动的全局常量之间不是有区别吗?我猜@const代表后者,是前者。我刚刚记录了一个类常量,生成的phpdoc正确地包含了描述。截至2017年4月,英文文档仍然没有
@const
<代码>@const
无效,并且不存在于PHPDocumentor中。使用
@var
。你不能在Netbeans中保留类常量的
@const
吗?我刚刚在Netbeans 8中进行了测试,并且能够在全局和类常量声明中省略
@const
。最终,。事实上,这对IDE来说似乎一点都不重要,例如,PHPStorm总是使用实际的代码值来找出类型(因为它必须有一个赋值)。因此本质上是“变量”的缩写,我们用来记录“常量”的东西?从2017年起,使用
@const
将正确输出我的描述,但
@var
不会输出任何类常量。这已过时。PSR-5草案的当前版本不再具体提到这一点。我认为常量不需要特定的类型提示,因为它们的类型是不可变的,并且总是可以推断:@Yogarine常量可能不需要类型提示,但可能需要记录使用的常量for@BradKent当然在这种情况下,只添加一个没有任何注释的docblock就足够了。