繁体   English   中英

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

[英]Defining multiple function argument types in PHP

是否可以将函数参数定义为多种可能的类型? 例如,一个函数可能需要一个字符串或一个整数来完成某事。 有可能以某种方式定义它吗?

    function something(int|string $token) {}

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

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

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;
    }
}

不,这是不可能的。

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

class Foo
{
}

function something(Foo $Object){}

您可以做的最好的事情称为类型提示,并在此处进行了解释:

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

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

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

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

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

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

(在我的脑海里,我不确定资源是如何处理的)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM