当使用phps__call
使一个类扩展2个类时,
可以使用@method
使IDE知道方法存在。
但是,当要求ide跳转到方法的声明时,您最终会看到@method行,一个不被卡住的方法是在上面或下面添加一个@see
行。但是,添加该行和分隔行会使phpdoc的长度/高度增加3倍。
是否可以在同一行上添加@see
?
看到了一些使用它的例子,还有一些在{}
中使用它的例子。
在我的ide(phpstorm)中测试了它,只有在它位于单独的行上时,@see
的跳转到声明才起作用。
phpdoc是否允许我们在与@see
相同的行上使用@method
?如果是,正确的语法是什么?
例子:
<?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());
最佳答案
phpdoc还没有一个正式的标准。phpdocumentor是事实上的标准,但php fig也在开发一个。
从AA>
在phpdoc注释中,phpstorm支持符合zend、pear和其他标准的格式化选项。
因为你我都发现要想弄清楚phpstorm到底支持什么需要反复试验。
phpdocumentor不支持the PHPStorm docs内联:
用@see标记的结构元素或长描述中的内联文本将在其描述中显示链接。
php fig的@see状态:
特定标记可能在“标记”定义的末尾有一个“inline phpdoc”部分…例如@method标记。可以使用“内联PHPDoc”来增强该标签,以提供有关参数、返回值或由函数和方法支持的任何其他标签的附加信息。
奇怪的是,proposed standard的定义并没有明确说明这一点。
我认为所有这些都意味着你可以在PHPDoc评论中使用@方法行,但是不要期望PHPSORD能识别它。您的语法是正确的,根据“标准”,它应该保留在@method的末尾。
关于php - 我可以在PHPDoc中的@method行上使用@see吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46756130/