【发布时间】:2015-02-18 07:06:14
【问题描述】:
PHP 5 可以做一些(有限的)type hinting,然而,在我看来,在现实世界的项目中,类型通常在 doc cmets 中描述。例如,而不是这个:
/**
* Test method
*/
function test(SomeType $param1) {
...
}
会有更常见的
/**
* Test method
*
* @param SomeType param1
*/
function test($param1) {
...
}
这两种方法的优缺点是什么?如果我认为 PhpDoc 方法更常见的假设是正确的,那为什么呢?为什么人们不更多地利用内置语言功能?
编辑:第三种选择是结合使用这两种方法:
/**
* Test method
*
* @param SomeType param1
*/
function test(SomeType $param1) {
...
}
但是,我个人并没有经常看到它使用过(查看 Symfony 或 PHPUnit 之类的库),老实说,这似乎也做一些工作并没有太多额外的好处。也许这就是为什么它不经常看到的原因。
【问题讨论】:
-
首先,您也可以写
@param SomeType $param1。它会阻止您传递除SomeType之外的任何其他类型。第二个只会在 phpDoc 中显示,但$param1可以是任何类型。 -
好点,我已经更新了 OP。
-
如果您使用的是具有自动完成功能的 IDE,您还可以键入内联提示,这有时会派上用场:/* @var $somevar \YourNamespace\YourObject */
-
郑重声明:PHP 已经进化了。它的新版本具有更强大的提示功能(可以处理标量、数组返回类型、空值......)。
标签: php phpdoc type-hinting