是否可以將函數參數定義爲多個可能的類型?例如,一個函數可能需要一個字符串或一個整數來完成某件事情。是否有可能以某種方式將其定義爲這樣?在PHP中定義多個函數參數類型
function something(int|string $token) {}
或者每個參數只支持一種類型?
(請注意,我知道我以後可以過濾輸入,我只是想擁有我的論點鍵入)
是否可以將函數參數定義爲多個可能的類型?例如,一個函數可能需要一個字符串或一個整數來完成某件事情。是否有可能以某種方式將其定義爲這樣?在PHP中定義多個函數參數類型
function something(int|string $token) {}
或者每個參數只支持一種類型?
(請注意,我知道我以後可以過濾輸入,我只是想擁有我的論點鍵入)
你能做的最好的被稱爲類型提示,並說明如下:
http://php.net/manual/en/language.oop5.typehinting.php
特別是,您可以提示類類型或數組類型,但(如手冊所述)「不支持使用int和string的傳統類型提示」。所以我想你在這個層面上想要達到的目標是不可能的。
但是,您可以創建自己的包裝等。有可能有一千種方法來處理這個問題。
不,這是不可能的。
此外,在PHP 5中鍵入提示現在僅適用於類和數組。 http://php.net/manual/en/language.oop5.typehinting.php
class Foo
{
}
function something(Foo $Object){}
...和數組。 – deceze
PHP是動態類型 - 但類型提示已經被添加到語言 - 所以,如果您還沒有暗示該參數可以傳遞任何你喜歡的類型:
function something($token)
{
if (is_numeric($token)) {
// its a float, double, integer
} else {
// its a string, array, object
}
}
(關我不知道如何處理資源)。
但是,如果你想在一個強類型語言編程,然後(恕我直言),你應該使用比PHP
乾杯其他的東西,我終於知道這就是所謂的類型提示了。 – Swader
它在PHP中僅僅被稱爲Hinting,因爲它實際上只是PHP解釋器的一個提示,因此它被指示「人爲地」檢查參數類型,並在與提示不匹配時拋出錯誤。在靜態類型語言中,它是一個基本的和必需的東西,是函數語法的一部分,它不是那樣調用的......實際上,我認爲它不具有特定的名稱,否則... – Palantir
這非常好知道,謝謝! – Swader