PhpStorm - 参数

时间:2016-05-29 12:43:27

标签: php phpstorm phpdoc type-hinting

我来自严格类型的编程语言,其类型名为“ANY”。

因为PHP是松耦合的,所以我需要对我的PhpDoc进行某种类型的提示,即变量,参数或返回值可以是任何类型。目前我必须写下这样的内容:

@var string|int|bool|array|object $someVariable

这会让我的生活更轻松,如果我可以写代码,代码会更容易阅读:

@var any $someVariable

在很多情况下,我实际上遇到了这个问题 - 在过去的几个月中,现在已超过20-30次了,因为我使用的是PhpStorm,它向我显示警告某些方法需要其他类型的参数类型,要么因为我忘了将它明确地放在类型列表中,或者因为我使用的是Eclipse编写的代码,它没有为我自称的“任何”类型显示任何警告。

我的问题:有没有办法告诉PhpStorm,当我说any我实际上是指string|any|bool|array|object或是否有其他类型提示说明了这一点?我也很好奇,如果我是唯一有这个问题的人,或者是否有其他人这样做。

3 个答案:

答案 0 :(得分:4)

你应该使用“混合”。另外,对于PHP7.0,还有参数和返回值的实际类型提示。

答案 1 :(得分:1)

PHP

  

伪类型和变量

     

混合

     

mixed表示参数可以接受多个(但不一定是所有)类型。

     例如,

gettype()将接受所有PHP类型,而str_replace()将接受字符串和数组。

     

- PHP Manual

PHPDoc的

  

mixed,此类型适用的元素可以是此处指定的任何类型。在编译时不知道将使用哪种类型。

     

- PSR-5

实施例

/**
 * Counts the number of items in the provided array.
 *
 * @param mixed[] $items Array structure to count the elements of.
 *
 * @return int Returns the number of elements.
 */
function count(array $items)
{
    <...>
}

答案 2 :(得分:0)

由于你有两个问题,我有两个答案。您在询问多种退货类型时会有什么好的做法。一个好的做法就是不要这样做。 (始终)确保您的方法只返回一种类型。这不仅会使您的方法更清晰,而且还会调用该方法的代码;您不必检查类型,并且您总是知道您获得的返回值,因此您将知道您可以使用它做什么。拥有一些建筑技能并不是一种艰难的做法。