標量類型宣告
預設情況下,所有的PHP檔案都處於弱型別校驗模式。
PHP 7 增加了標量類型宣告的特性,標量類型宣告有兩種模式:
強制模式(預設)
##嚴格模式
標量類型聲明語法格式:declare(strict_types=1);
int
#float
bool
string
interfaces
array
## callable強制模式實例#實例
<?php // 强制模式 function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>
以上程式執行輸出結果為:
9
實例匯總將參數4.1 轉換為整數4 後再相加。
嚴格模式實例實例
<?php // 严格模式 declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>
以上程式由於採用了嚴格模式,所以如果參數中出現不適整數的型別會報錯,執行輸出結果為:
PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……
傳回類型宣告PHP 7 增加了對傳回型別宣告的支持,傳回型別宣告指明了函數傳回值的類型。
可以宣告的回傳型別有:
int#float
##bool
string
interfaces
array
## callable
傳回型別宣告實例
實例中,要求傳回結果為整數:實例
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value; } print(returnIntValue(5)); ?>
以上程式執行輸出結果為:
5#傳回型別宣告錯誤實例##實例
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value + 1.0; } print(returnIntValue(5)); ?>
以上程式由於採用了嚴格模式,回傳值必須是int,但是計算結果是float,所以會報錯,執行輸出結果為:
Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...