🕵️‍♂️

PHPにおけるstrictモードを使った厳密な型宣言

2021/11/11に公開

以前、PHP の型について記事を書きました。今回は型を強制できるというおはなしです。

strict モードについて

strict モードを有効にすることで厳密な型宣言ができます。
strict モードが有効でないとき、エラーが出ずに実行できてしまうことがあります。[1]
有効にするには declare 文 に strict_types=1 をセットします。

<?php
// strictモードの有効化
declare(strict_types=1);

function sum(int $a, int $b) {
    return $a + $b;
}

// int(3) という結果が得られる
var_dump(sum(1, 2));

// 引数がintでないためエラーがでる
var_dump(sum(1.5, 2.5));
?>

strict モードを有効にする必要性

strict モードを有効にしないと、意図しない挙動を起こすことがあります。
たとえば、整数同士の足し算のみ行いたい関数に対して引数として小数を与えたときにエラーが出ず実行されてしまいます。

<?php
function sum(int $a, int $b) {
    return $a + $b;
}

// int(3) という結果が得られる
var_dump(sum(1, 2));

// エラーが出ずにint(3) という結果が得られる
var_dump(sum(1.5, 2.5));
?>

参考

declare
厳密な型付け

脚注
  1. '1'+2 といった「数値に変換できる文字列+数値」に対して、計算結果(この例では 3)が出力されます。 ↩︎

GitHubで編集を提案

Discussion