PHPDoc是将JavaDoc适配到PHP的工具。通过在注释中使用正确的语法,可以用它来记录各种类型的内容。例如,IDE等工具可以使用这些元数据。
以下是一个使用“简单”的字符串数组的示例。
/**
* @param string[] $strings This parameter is blah blah blah.
*/
public function foo($strings) {
// ...
}
但是 PHP 的“数组”也可以用作映射(又称哈希表或字典)。以下是 PHP 文档中的一个示例 (http://php.net/manual/en/language.types.array.php):
$array = array(
"foo" => "bar",
"bar" => "foo",
);
现在假设我们修改我们的函数
foo
,以处理像上面的$array
一样的东西:一个字符串 => 字符串的数组。/**
* @param ??????? entries This parameter is blah blah blah.
*/
public function foo($entries) {
// ...
}
在PHPDoc中,$entries
的类型应该如何表示?
http://www.phpdoc.org/docs/latest/guides/types.html#arrays甚至没有提到这种语言结构的存在。
$entries
的类型应该简单地声明为array
。我认为这是phpdoc的一个限制。我猜想意图是为了向其他开发人员记录参数的结构,而不是为了类型提示,因为这对于数组永远不起作用。您可以在描述中编写进一步的文档。如果您想要更清晰的解决方案,那么您应该编写一个表示哈希映射的类class foobar { public $foo; public $bar; }
并将其声明为foobar
类型。在这种情况下,类型提示也将起作用。 - steven@return array
),具有单个类型(即@return int []
)或多个类型(即@return(int | string)[]
)。但是,没有提到更复杂的数组,例如关联数组。 - Dave F