的文档块的东西,一个编码器可以用它来解释的功能是什么,它将被PHP解析器会被忽略,因为它只是一个评论它是一个将docblock放在每个函数和方法之上的好做法是,因为当某人(或您)读取代码时,更容易看到该函数的功能。
一个IDE通常采用的docblock为自动完成,该文档块然而,应该由string
和:bool
重写时,块不代码
然而
function foo(string $text): bool
{
return true;
}
匹配不等同于
/**
* @param string $text
* @return bool
*/
function foo($text) {
return true;
}
在第一实施例中的:bool
强制执行foo()
返回true
或false
,其他任何和PHP都会尝试将返回值转换为该类型或抛出致命错误。 对于$text
,与string
相同。第一个参数必须是字符串类型的值,否则PHP尝试将其转换为字符串或一个致命的错误将被抛出
的@return bool
和@param string
强制什么都没有,只是说,预期收益或者是true
或false
看看下面的例子:
function foo(string $a) :bool
{
var_dump($a); // string '10'
return "string";
}
var_dump(foo(10)); // bool true
没有问题存在,PHP可以投10
为字符串,并"string"
是true
有用下面虽然
function foo(PDO $a) :bool
{
var_dump($a);
return "string";
}
var_dump(foo(10)); // fatal error, 10 is not PDO and can not be cast to PDO
使用的docblock使最后一个工作(可能运行到其他问题上进一步,因为你可能试图做一些与PDO对象)
注意一个问题:PHP确实尚未支持混合类型typehinting(即字符串|数组)仍然必须通过在docblock中指定它来完成
您是否运行phpdoc以查看它在声明参数和结果类型时的行为?这会给你你的答案。 –
@JohnConde,是不是PHPDoc能够识别这种语法? –
@MarcBrillault他想说的是:**试试看看吧** – Xatenev