變數

型別檢查

一些關於變數和型別的文件提到 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() 的整數和布林值分別是 integerboolean。但是對於這些變數的型別提示,你需要使用 intbool。否則 PHP 不會給你一個語法錯誤,但它會期望傳遞 integerboolean

上面的示例丟擲一個錯誤,如果非數字值被賦予 $a$b 引數,並且該函式返回的內容不是 truefalse。上面的例子是鬆散的,因為你可以給 $a$b 一個浮動值。如果你希望強制執行嚴格型別,這意味著你只能輸入整數而不是浮點數,請將以下內容新增到 PHP 檔案的最開頭:

<?php
declare('strict_types=1');

在 PHP 7 之前,函式和方法允許對以下型別進行型別提示:

  • callable(可呼叫的函式或方法)
  • array(任何型別的陣列,也可以包含其他陣列)
  • 介面(完全限定類名稱或 FQDN)
  • 類(FQDN)

另請參閱: 輸出變數的值