declare(strict_types=1); とは、PHP7から導入された、厳格な型検査モードの指定構文です。 有効範囲をあまり把握してなかったのでまとめてみました。 strict_types基本の動き 例えばこんなコード。 <?php function add(int $a, int $b): int { return $a + $b; } var_dump(add(1.0, 2.0)); この状態で単体実行すると、int(3)が出力されます。 渡しているのはdouble型なのですが、よしなにキャストされて処理されています。まあ、昔ながらのPHPらしい動きです。 ここで、declare(strict_types=1)を有効にしてみます。