登録日:
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) を積極的に使用することが推奨されるケースが多いです。