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

Swa*_*der 8 php arguments declaration function

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

    function something(int|string $token) {}
Run Code Online (Sandbox Code Playgroud)

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

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

Sha*_*eOH 24

2020 更新:

联合类型最终在 PHP 8.0 中实现,预计在 2020 年底发布。

它们可以这样使用:

class Number {
    private int|float $number;

    public function setNumber(int|float $number): void {
        $this->number = $number;
    }

    public function getNumber(): int|float {
        return $this->number;
    }
}
Run Code Online (Sandbox Code Playgroud)


Pal*_*tir 2

你能做的最好的事情就是类型提示,解释如下:

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

特别是,您可以提示类类型或数组类型,但是(如手册所述)“不支持使用 int 和 string 的传统类型提示”。所以我想你想要完成的事情在这个级别是不可能的。

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