PHP 標(biāo)量類型與返回值類型聲明

PHP 7 新特性 PHP 7 新特性


標(biāo)量類型聲明

默認(rèn)情況下,所有的PHP文件都處于弱類型校驗(yàn)?zāi)J健?/p>

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

  • 強(qiáng)制模式 (默認(rèn))
  • 嚴(yán)格模式

標(biāo)量類型聲明語(yǔ)法格式:

declare(strict_types=1); 

代碼中通過指定 strict_types的值(1或者0),1表示嚴(yán)格類型校驗(yàn)?zāi)J剑饔糜诤瘮?shù)調(diào)用和返回語(yǔ)句;0表示弱類型校驗(yàn)?zāi)J健?/p>

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

  • int

  • float

  • bool

  • string

  • interfaces

  • array

  • callable

強(qiáng)制模式實(shí)例

實(shí)例

<?php
// 強(qiáng)制模式
function sum(int ...$ints)
{
   return array_sum($ints);
}

print(sum(2, '3', 4.1));
?>

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

9

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

嚴(yán)格模式實(shí)例

實(shí)例

<?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ù)的類型會(huì)報(bào)錯(cuò),執(zhí)行輸出結(jié)果為:

PHP Fatal error:  Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……

返回類型聲明

PHP 7 增加了對(duì)返回類型聲明的支持,返回類型聲明指明了函數(shù)返回值的類型。

可以聲明的返回類型有:

  • int

  • float

  • bool

  • string

  • interfaces

  • array

  • callable

返回類型聲明實(shí)例

實(shí)例中,要求返回結(jié)果為整數(shù):

實(shí)例

<?php
declare(strict_types=1);

function returnIntValue(int $value): int
{
   return $value;
}

print(returnIntValue(5));
?>

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

5

返回類型聲明錯(cuò)誤實(shí)例

實(shí)例

<?php
declare(strict_types=1);

function returnIntValue(int $value): int
{
   return $value + 1.0;
}

print(returnIntValue(5));
?>

以上程序由于采用了嚴(yán)格模式,返回值必須是 int,但是計(jì)算結(jié)果是float,所以會(huì)報(bào)錯(cuò),執(zhí)行輸出結(jié)果為:

Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...

PHP 7 新特性 PHP 7 新特性