變數
型別檢查
一些關於變數和型別的文件提到 PHP 不使用靜態型別。這是正確的,但是當涉及到函式/方法引數和返回值時,PHP 會進行一些型別檢查(特別是使用 PHP 7)。
你可以通過在 PHP 7 中使用型別提示來強制執行引數和返回值型別檢查,如下所示:
<?php
/**
* Juggle numbers and return true if juggling was
* a great success.
*/
function numberJuggling(int $a, int $b) : bool
{
$sum = $a + $b;
return $sum % 2 === 0;
}
注: PHP 的
gettype()
的整數和布林值分別是integer
和boolean
。但是對於這些變數的型別提示,你需要使用int
和bool
。否則 PHP 不會給你一個語法錯誤,但它會期望傳遞integer
和boolean
類。
上面的示例丟擲一個錯誤,如果非數字值被賦予 $a
或 $b
引數,並且該函式返回的內容不是 true
或 false
。上面的例子是鬆散的,因為你可以給 $a
或 $b
一個浮動值。如果你希望強制執行嚴格型別,這意味著你只能輸入整數而不是浮點數,請將以下內容新增到 PHP 檔案的最開頭:
<?php
declare('strict_types=1');
在 PHP 7 之前,函式和方法允許對以下型別進行型別提示:
callable
(可呼叫的函式或方法)array
(任何型別的陣列,也可以包含其他陣列)- 介面(完全限定類名稱或 FQDN)
- 類(FQDN)
另請參閱: 輸出變數的值