PHPDoc - 指定数组键的类型

19

我该如何在返回一个数组的PHP方法的文档中指定键的类型?


例如,当我返回一个对象数组时,可以使用 @return MyClass[] 这样的语法。

但如果我想注释如下结构的数组 array( 'string' => array( MyClass ) ),是否也有类似的语法呢?


1
@RahilWazir,我在PHPStorm中使用@return MyClass[]来获取代码完成,它完美地工作了...为什么我不应该这样做?我怎样才能正确地使用@return array来获得正确的代码完成?编辑:此外,在官方PHPDoc网站上也有相关说明:http://phpdoc.org/docs/latest/guides/types.html#arrays - MikO
请参考此链接:https://dev59.com/l2Up5IYBdhLWcg3wPFtK。我不了解PHPStorm的代码自动完成功能。但是,您可以在给出的答案中注释数组键,但我认为这对于代码自动完成来说并不起作用。 - Rahil Wazir
你是否将对象用作数组键?如果不是,当数组键变量不是对象时,你期望从数组键变量中获得什么自动完成呢?我一定漏掉了什么。 - ashnazg
2
目前还没有确定的语法可以记录数组键的数据类型,因此我不确定任何 IDE 是否已尝试实现一种派生它的方法。有一个提议采用“通用语法”来规范记录键数据类型的方式(https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md#collections),但我不知道是否有任何 IDE 已经尝试实现它。 - ashnazg
2
可能是PHP Documentor中的关联数组注释的重复问题。 - Christian
2个回答

23

经过多年的发展,现在可以使用例如@return array<integer, string>这样的语法来文档化数组键和值,表示由整数键索引的字符串值数组。

我不知道这种语法的标准性和支持程度如何。像PHPCSPsalm这样的工具支持它。


-16

为什么需要指定数据类型呢?您只需使用foreach循环遍历结果即可访问数组中的值。

例如:

$arr = array("name" => "MikO", "street" => "straatnaam", "number" => "2");


//Here is key the first key, in this case: name, street, number
//And value are the values of the keys, in this case: MikO, straatnaam, 2

foreach($arr as $key => $value)
{
echo $key." ".$value."<br/>";
}

你也可以使用这个来提取其中的一些特定数据:
echo $arr['name'];

如果你想进入对象:
foreach($arr as $objname => $objcontent)
{
 foreach($objcontent as $objnodename => $objnodevalue)
{
echo $objnodename." = ".$objnodevalue;
}

}

12
谢谢,但是幸运的是我已经知道如何循环遍历数组了 :) 我想要的是为这种数组添加适当的文档,以便在我的IDE中获得代码提示,这与你的回答无关... - MikO
@MikO 对不起,您可以在代码中添加注释,这样不够好吗? - user3734231
4
对于某些人来说,这已经足够好了。但对于PHPStorm来说不行,它无法理解纯文本注释并为我提供代码完成... - MikO

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