役立つ情報
登録日: 2025-02-05   最終更新日: 2025-03-07

php declare(strict_types=1) とは?

declare(strict_types=1) は、PHPのスクリプトやファイルの先頭に記述することで、厳密な型チェック(strict typing) を有効にする宣言です。

使い方


<?php
declare(strict_types=1);

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

echo add(5, 10); // 正常に動作
echo add(5, "10"); // エラー(strict_types が有効なため)

効果

  • 関数やメソッドの引数・戻り値の型チェックが厳密になる
    • strict_types=1 を設定すると、関数の引数や戻り値が指定された型と完全に一致しない場合に TypeError を発生させる。
    • strict_types=0(デフォルト)では、PHPの型変換により、暗黙的に型が変換されてしまう。

strict_types=1 の影響

状況 strict_types=1 strict_types=0(デフォルト)
add(5, "10")(string → int) エラー 自動的に int に変換される
multiply(2.5, 2)(float → int) エラー 自動的に int に変換される

ポイント

  • declare(strict_types=1); は ファイル単位 で適用される。
  • クラスや関数の外側 でのみ指定可能。(スクリプトの先頭で記述する必要がある)
  • 他のファイルを include や require した場合、それらのファイルの strict_types 設定には影響を与えない。

メリット

  • 型の安全性が向上 → 意図しない型変換によるバグを防げる。
  • コードの可読性向上 → 期待されるデータ型が明確になる。

デメリット

  • 既存のコード(特に古いPHPコード)との互換性が低下する可能性がある。

PHP 7.0 以降のモダンなコードでは、declare(strict_types=1) を積極的に使用することが推奨されるケースが多いです。


Copyright 役立つ情報.net