簡體   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