PHPのスカラー型と戻り値の型宣言
スカラー型宣言
デフォルトでは、すべての PHP ファイルは弱い型チェック モードになっています。
PHP 7 では、スカラー型宣言の機(jī)能が追加されました。
- Force モード (デフォルト)
- Strict モード
スカラー型宣言の構(gòu)文形式:
declare(strict_types=1);
code 値 (1 または 0)。1 は厳密な型チェック モードを示し、関數(shù)呼び出しと return ステートメントに適用されます。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モードの例
Instance
<?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ù)型が現(xiàn)れた場(chǎng)合、実行出力結(jié)果は以下のようになります。
PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……
戻り値の型宣言
PHP 7 の追加 戻り値の型宣言のサポートに加えて、戻り値の型宣言で関數(shù)の戻り値の型を指定します。
宣言できる戻り値の型は次のとおりです:
int
float
bool
string
interfaces
-
配列
呼び出し可能
戻り値の型 宣言インスタンス
インスタンスでは、戻り値は整數(shù)である必要があります:
インスタンス
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value; } print(returnIntValue(5)); ?>
上記のプログラム実行出力結(jié)果は次のとおりです:
5
戻り値の型宣言エラー インスタンス
インスタンス
rrree上記のプログラムは strict モードを使用しており、戻り値は int である必要がありますが、計(jì)算結(jié)果は float であるため、実行出力結(jié)果は次のようになります。
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value + 1.0; } print(returnIntValue(5)); ?>