PHP 標(biāo)量類型與傳回值類型宣告


標(biāo)量類型宣告

預(yù)設(shè)情況下,所有的PHP檔案都處於弱型別校驗?zāi)J健?

PHP 7 增加了標(biāo)量類型宣告的特性,標(biāo)量型別宣告有兩種模式:

  • 強(qiáng)制模式(預(yù)設(shè))
  • ##嚴(yán)格模式
標(biāo)量類型宣告語法格式:

declare(strict_types=1);
程式碼中透過指定strict_types的值(1或0),1表示嚴(yán)格型別校驗?zāi)J剑饔渺逗胶艚泻蛡骰卣Z句;0表示弱型別校驗?zāi)J健?

可以使用的型別參數(shù)有:

  • int

  • #float

  • bool

  • string

  • interfaces

  • array

#callable

強(qiáng)制模式實例

實例
<?php
// 強(qiáng)制模式
function sum(int ...$ints)
{
   return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>

以上程式執(zhí)行輸出結(jié)果為:

9
實例匯總將參數(shù)4.1 轉(zhuǎn)換為整數(shù)4 後再相加。

嚴(yán)格模式實例

實例

<?php
// 嚴(yán)格模式
declare(strict_types=1);
function sum(int ...$ints)
{
   return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>

#以上程式由於採用了嚴(yán)格模式,所以如果參數(shù)中出現(xiàn)不適整數(shù)的類型會報錯,執(zhí)行產(chǎn)出結(jié)果為:
  • PHP?Fatal?error:??Uncaught?TypeError:?Argument?2?passed?to?sum()?must?be?f,?

    傳回類型宣告
  • PHP 7 增加了對傳回類型宣告的支持,傳回型別宣告指明了函數(shù)傳回值的型別。

    可以宣告的傳回型別有:
  • int
  • #float
  • bool
  • string
  • interfaces

array

#callable

傳回類型宣告實例
實例中,要求傳回結(jié)果為整數(shù):


實例

<?php
declare(strict_types=1);
function returnIntValue(int $value): int
{
   return $value;
}
print(returnIntValue(5));
?>