PHP7は、スカラー型宣言の特徴を導入し、開発者が関数パラメーターと戻り値のデータ型を明示的に指定できるようにします。この機能は、コードの信頼性を向上させるだけでなく、保守性を向上させます。この記事では、PHP7でスカラー型宣言を使用する方法を紹介し、関連する例を示します。
PHP7以前は、PHPは動的に型付け言語であり、変数のデータ型は割り当てによって自動的に決定されました。この柔軟性は場合によっては有益ですが、見つけにくいエラーに簡単につながる可能性があります。たとえば、パラメータータイプが関数で検証されていない場合、誤ったデータ型を渡すとランタイムエラーが発生する場合があります。
PHP7のスカラー型宣言は、関数パラメーターの4つのスカラー型と、return値の4つのスカラータイプを指定できます:int(int)、float(float)、string(string)、およびbool(boolean)。スカラー型宣言を使用することにより、開発者はデータ型をより明確に処理できるため、一般的な間違いを回避できます。
これは、スカラータイプを使用して宣言された機能の例です。
function multiply(int $a, int $b): int {
return $a * $b;
}
echo multiply(5, 10); // 出力 50
echo multiply(5, '10'); // エラーを報告します:Argument 2 must be of the type integer, string given
この例では、複数関数の引数と戻り値の両方がintタイプとして宣言されます。 2つの整数を渡すと、関数は正常に実行され、正しい結果が返されます。ただし、整数と文字列が渡された場合、PHPは2番目のパラメーターが整数型でなければならないことを示すエラーを報告します。これにより、誤ったパラメータータイプの処理が回避され、関数動作の信頼性が保証されます。
通常のスカラータイプに加えて、いくつかの特別なタイプを使用してデータ型をさらに制約することもできます。たとえば、ブールタイプを使用して、関数パラメーターをブール値に制限できます。
function isAdult(bool $isAdult): string {
if ($isAdult) {
return '大人';
} else {
return '未大人';
}
}
echo isAdult(true); // 出力 大人
echo isAdult(1); // 出力 大人
echo isAdult(false); // 出力 未大人
echo isAdult(0); // 出力 未大人
この例では、isAdult関数のパラメーターはブールタイプとして宣言され、戻り値は文字列型として宣言されます。これにより、関数のパラメーターがブール値のみになり、戻り値が文字列にのみ存在することが保証されます。
スカラー型宣言は、関数のパラメーターだけでなく、返品値タイプにも適用されます。返品値のタイプを指定することにより、発信者は返されたデータ型をより明確に知ることができます。例えば:
function divide(int $a, int $b): float {
return $a / $b;
}
echo divide(10, 2); // 出力 5.0(フローティングポイント番号)
echo divide(10, 3); // 出力 3.3333333333333(フローティングポイント番号)
上記の例では、divid関数のパラメーターと戻り値は、それぞれintおよびfloatタイプとして宣言されます。結果が浮動小数点数であっても、戻り値はフロートタイプとして明示的に宣言されます。これは、関数の動作をよりよく理解し、それを正確に処理するのに役立ちます。
スカラー型宣言はデータ型をキャストしないことに注意する必要があります。着信データ型が一致しない場合、PHPはタイプ変換を自動的に実行しようとします。たとえば、文字列「10」を予想される整数に引数に渡すと、PHPは自動的に整数に変換されます。ただし、開発者は、不必要なタイプの変換を避けるために、データ型が可能な限り一致するようにする必要があります。
要するに、PHP7のスカラー型宣言を使用することにより、コードはより明確で信頼性を高めることができます。パラメーターを渡すときに開発者がエラーを減らし、コードの維持と理解を容易にするのに役立ちます。スカラー型宣言は必須ではありませんが、高品質のPHPコードを開発するための良い習慣です。