php7 「declare(strict_types=1)」を使って変数の型を厳格にする

php7 「declare(strict_types=1)」を使って変数の型を厳格にする

php7より「declare(strict_types=1)」を使用することにより、厳格に変数の型を指定することが可能です。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • PHP 7.4.5

※windows10にApacheのインストールはこちら
※windows10にphpのインストールはこちら

サンプルコード

下記は、「declare(strict_types=1);」 を使用して、引数の型が異なる場合にエラーを出力するサンプルコードとなります。
ファイル名は「test.php」となってます。

<?php
declare(strict_types=1);
ini_set('display_errors', "On");
ini_set('mbstring.internal_encoding' , 'UTF-8');

function test(int $i){
    echo $i;
}
test("1");

?>

関数「test」を実行した際に、引数が文字列になっているのでエラーが発生します。

Fatal error: Uncaught TypeError: Argument 1 passed to test() must be of the type int, string given, called in C:\Apache24\htdocs\test.php on line 9 and defined in C:\Apache24\htdocs\test.php:6 Stack trace: #0 C:\Apache24\htdocs\test.php(9): test() #1 {main} thrown in C:\Apache24\htdocs\test.php on line 6

引数を文字列ではなく、数値を引数として利用するとエラーはなくなります。

<?php
declare(strict_types=1);
ini_set('display_errors', "On");
ini_set('mbstring.internal_encoding' , 'UTF-8');

function test(int $i){
    echo $i;
}
test(1);

?>