我来自严格类型的编程语言,其类型名为“ANY”。
因为PHP是松耦合的,所以我需要对我的PhpDoc进行某种类型的提示,即变量,参数或返回值可以是任何类型。目前我必须写下这样的内容:
@var string|int|bool|array|object $someVariable
这会让我的生活更轻松,如果我可以写代码,代码会更容易阅读:
@var any $someVariable
在很多情况下,我实际上遇到了这个问题 - 在过去的几个月中,现在已超过20-30次了,因为我使用的是PhpStorm,它向我显示警告某些方法需要其他类型的参数类型,要么因为我忘了将它明确地放在类型列表中,或者因为我使用的是Eclipse编写的代码,它没有为我自称的“任何”类型显示任何警告。
我的问题:有没有办法告诉PhpStorm,当我说any
我实际上是指string|any|bool|array|object
或是否有其他类型提示说明了这一点?我也很好奇,如果我是唯一有这个问题的人,或者是否有其他人这样做。
答案 0 :(得分:4)
你应该使用“混合”。另外,对于PHP7.0,还有参数和返回值的实际类型提示。
答案 1 :(得分:1)
伪类型和变量
混合
例如,
mixed
表示参数可以接受多个(但不一定是所有)类型。
gettype()
将接受所有PHP类型,而str_replace()
将接受字符串和数组。
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)
由于你有两个问题,我有两个答案。您在询问多种退货类型时会有什么好的做法。一个好的做法就是不要这样做。 (始终)确保您的方法只返回一种类型。这不仅会使您的方法更清晰,而且还会调用该方法的代码;您不必检查类型,并且您总是知道您获得的返回值,因此您将知道您可以使用它做什么。拥有一些建筑技能并不是一种艰难的做法。