PHP 標量類型與傳回值類型聲明
PHP 標量類型與傳回值類型宣告
標量類型宣告
預設情況下,所有的PHP檔案都處於弱型別校驗模式。
PHP 7 增加了標量類型宣告的特性,標量型別宣告有兩種模式:
- 強制模式(預設) ##嚴格模式
declare(strict_types=1);
程式碼中透過指定strict_types的值(1或0),1表示嚴格型別校驗模式,作用於函式呼叫和傳回語句;0表示弱型別校驗模式。 可以使用的型別參數有:- int
- #float
- bool
- string
- interfaces
- array
#callable
強制模式實例
實例<?php
// 强制模式
function sum(int ...$ints)
{
return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>以上程式執行輸出結果為:實例匯總將參數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 f,
傳回類型宣告- PHP 7 增加了對傳回類型宣告的支持,傳回型別宣告指明了函數傳回值的型別。 可以宣告的傳回型別有:
- int
- #float
- bool
- string
- interfaces
#callable
傳回類型宣告實例實例中,要求傳回結果為整數:
實例
<?php
declare(strict_types=1);
function returnIntValue(int $value): int
{
return $value;
}
print(returnIntValue(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...##########################################################################################################################################1 

