亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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

標(biāo)量類(lèi)型聲明

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

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

強(qiáng)制模式 (默認(rèn))

嚴(yán)格模式

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

declare(strict_types=1);

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

declare(strict_types=1)必須是文件的第一個(gè)語(yǔ)句。如果這個(gè)語(yǔ)句出現(xiàn)在文件的其他地方,將會(huì)產(chǎn)生一個(gè)編譯錯(cuò)誤,塊模式是被明確禁止的。

strict_types指令影響指定使用的文件,不會(huì)影響被它包含(通過(guò)include等方式)進(jìn)來(lái)的其他文件。該指令在運(yùn)行時(shí)編譯,不能修改。它的運(yùn)作方式,是在opcode中設(shè)置一個(gè)標(biāo)志位,讓函數(shù)調(diào)用和返回類(lèi)型檢查符合類(lèi)型約束。

可以使用的類(lèi)型參數(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ù)的類(lèi)型會(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……

返回類(lèi)型聲明

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

可以聲明的返回類(lèi)型有:

int

float

bool

string

interfaces

array

callable

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

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

實(shí)例

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

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

5

返回類(lèi)型聲明錯(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...


繼續(xù)學(xué)習(xí)
||
<?php // 強(qiáng)制模式 function sum(int $ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>
提交重置代碼