PHPDoc中的@method行上可以使用@see吗?

3
当使用PHP的__call使一个类继承2个类时,您可以使用@method让IDE知道方法的存在。但是,当要求IDE跳转到该方法的声明时,您会停留在@method所在的行上,为了不卡在那里,一种方法是在上面或下面添加一个@see行。但是,添加该行和分隔符行将使PHPDoc高度增加3倍。
是否可能在同一行上添加@see
有些示例使用它本来就是这样,另一些示例使用它在{}内部。在我的IDE(PhpStorm)中进行了测试,当@see位于单独的行上时,跳转到@see的声明才起作用。
PHPDoc允许我们在@method的同一行上使用@see吗?如果是这样,正确的语法是什么?
例如:
<?php
class a { function ma() { return "a"; } }
class b { function mb() { return "b"; } }

/**
 * Class c
 *
 * @method string mb() { @see b::mb() }
 */
class c extends a
{
    /** @var b b */
    public $b;

    function __construct() { $this->b = new b(); }
    function mc() { return "c"; }

    function __call($name, $arguments)
    {
        return call_user_func_array([$this->b, $name], $arguments);
    }
}

$c = new c();
var_dump($c->mb());
1个回答

3

PHPDoc目前还没有正式的标准。PHPDocumentor是事实上的标准,但PHP FIG也在制定标准。

来自PHPStorm文档:

在PHPDoc注释中,PhpStorm支持符合ZEND、PEAR和其他标准的格式选项。

正如你和我都发现的那样,需要通过试错才能确定PHPStorm支持的确切内容。

PHPDocumentor确实支持@see内联:

结构元素或长描述中的内联文本,使用@see标记标记将在其描述中显示链接。

PHP FIG的建议标准指出:

特定标签可能在“标签”定义的末尾具有“内联PHPDoc”部分...一个示例是@method标签。可以使用“内联PHPDoc”来增强此标签,以提供有关参数、返回值或任何其他函数和方法支持的标签的附加信息。

奇怪的是@method定义没有明确说明这一点。

我理解这意味着您可以在PHPDoc注释中的@method行上使用@see,但不要指望PHPStorm能够识别它。您的语法是正确的,并且根据“标准”,它应该保留在@method的末尾。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接