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()? ?? ?? ??, ?? ??? ????? ???...