PHP スカラー型と戻り値の型宣言


スカラー型宣言

デフォルトでは、すべての PHP ファイルは弱い型チェック モードになっています。

PHP 7 では、スカラー型宣言の機(jī)能が追加されました。

  • force モード (デフォルト)
  • strict モード

スカラー型宣言の構(gòu)文形式:

declare(strict_types=1) ) ;

コード內(nèi)で strict_types の値 (1 または 0) を指定すると、1 は関數(shù)呼び出しと return ステートメントに適用される?yún)椕埭市庭隶Д氓?モードを示し、0 は弱い型チェック モードを示します。

使用できる型パラメータは次のとおりです:

  • int

  • float

  • bool

  • string

  • interfaces

  • 配列

  • 呼び出し可能

強(qiáng)制モード 例

<?php
// 強(qiáng)制模式
function sum(int ...$ints)
{
   return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>

上記のプログラム実行出力結(jié)果は、

9

例の概要 パラメータ 4.1 を整數(shù) 4 に変換して加算します。

Strictモードの例

Example

<?php
// 嚴(yán)格模式
declare(strict_types=1);
function sum(int ...$ints)
{
   return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>

上記のプログラムはStrictモードを採(cǎi)用しているため、パラメータに不適切な整數(shù)型がある場(chǎng)合、実行出力結(jié)果は以下のようになります。

PHP Fatal error : Uncaught TypeError: sum() に渡される引數(shù) 2 は、整數(shù)、指定された文字列、呼び出し先の型である必要があります...

戻り値の型宣言

PHP 7 では、関數(shù)の型を指定する戻り値の型宣言のサポートが追加されました戻り値。

宣言できる戻り値の型は次のとおりです:

  • int

  • float

  • bool

  • string

  • interfaces

  • 配列

  • 呼び出し可能

戻り値の型 宣言インスタンス

インスタンスでは、戻り結(jié)果は整數(shù)である必要があります:

インスタンス

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

上記のプログラム実行出力結(jié)果は次のとおりです:

5

戻り値の型宣言エラー インスタンス

インスタンス

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

上記のプログラムは strict モードのため、戻り値は int である必要がありますが、計(jì)算結(jié)果は float であるため、エラーが報(bào)告されます。

Fatal error: Uncaught TypeError: returnIntValue() の戻り値は整數(shù)型、浮動(dòng)小數(shù)點(diǎn)型である必要があります...