在PHP中定义多个函数参数类型

时间:2011-10-24 06:33:39

标签: php function arguments declaration

是否可以将函数参数定义为多种可能的类型?例如,函数可以使用字符串或整数来完成某些操作。有可能以某种方式定义它吗?

    function something(int|string $token) {}

或者每个参数只支持一种类型吗?

(请注意,我知道我以后可以过滤输入,我只想输入我的参数)

4 个答案:

答案 0 :(得分:13)

2020更新:

Union类型在PHP 8.0中具有finally been implemented,该版本将于2020年底发布。

它们可以像这样使用:

name = 'John Black'
print(name[:len(name)-6] + 'White')  # note that the space is not included

答案 1 :(得分:3)

不,这是不可能的。

此外,PHP 5中的类型提示现在仅适用于类和数组。 http://php.net/manual/en/language.oop5.typehinting.php

class Foo
{
}

function something(Foo $Object){}

答案 2 :(得分:2)

您可以做的最好的事情叫做Type Hinting,在这里解释:

http://php.net/manual/en/language.oop5.typehinting.php

特别是,您可以提示类类型或数组类型,但(如手册所述)“不支持使用int和string的传统类型提示。”所以我想你想要达到的目标是不可能的。

但是,您可以创建自己的包装器等。可能有一千种方法来处理它。

答案 3 :(得分:0)

PHP是动态类型的 - 但是语言中添加了类型提示 - 所以如果你没有暗示参数,你可以传递任何你喜欢的类型:

function something($token) 
{
   if (is_numeric($token)) {
     // its a float, double, integer

   } else {
     // its a string, array, object
   }
}

(我不知道如何处理资源)。

但是如果你想用强类型语言编程,那么(恕我直言)你应该使用PHP以外的东西