PHP ??? ?? ? ?? ? ?? ??
PHP ??? ?? ? ?? ? ?? ??
??? ?? ??
????? ?? PHP ??? ?? ?? ?? ??? ????.
PHP 7?? ??? ?? ?? ??? ???????. ??? ?? ???? ? ?? ??? ????:
- force ??(???)
- strict ??
??? ?? ?? ?? ??:
declare(strict_types=1) ) ;
???? strict_types ?(1 ?? 0)? ???? 1? ?? ?? ? ?? ?? ???? ??? ?? ?? ??? ?????. 0? ?? ?? ?? ??? ?????.
?? ??? ?? ????? ??? ????:
int
float
bool
string
interfaces
-
??
?? ??
force mode ??
?
<?php // 強制模式 function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>
? ???? ?? ?? ??? ??? ????.
9
?? ?? ???? 4.1? ?? 4? ??? ? ?????.
?? ?? ??
Example
<?php // 嚴格模式 declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>
? ????? ?? ??? ???? ??? ????? ???? ???? ??? ??? ?????.
PHP ???? ?????. : Uncaught TypeError: sum()? ??? ?? 2? ?? ????? ?? ??? ???, ???...
?? ?? ??
PHP 7??? ?? ??? ???? ?? ?? ??? ?? ??? ?????. ?? ?.
??? ? ?? ?? ??? ??? ????:
int
float
bool
string
interfaces
-
??
?? ??
?? ?? ?? ????
?????? ?? ??? ???? ???.
????
<?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)); ?>
? ????? strict ??? ?? ?? ?? int?? ??? ?? ??? float??? ?? ??? ??? ????.
Fatal error: Uncaught TypeError: returnIntValue()? ?? ?? ??, ?? ??? ????? ???...