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 ));
?>
//強制模式
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 ));
?>
//嚴格模式
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 ));
?>
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 ));
?>
實例
<?php
declare( strict_types = 1 );
function returnIntValue ( int $value ): int
{
return $value + 1.0 ;
}
print( returnIntValue ( 5 ));
?>
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...