PHPは引数が足りないときはエラーになるが、引数が多いぶんには何も言わない


PHPは関数の引数が足りないときは、Fatalエラーを出すが、引数が多いぶんにはエラー等にはならず、そのまま処理が進む仕様がある。

関数の引数が足りないとき:

function dyadic_function($arg1, $arg2): void
{
    // do nothing
}

dyadic_function(1);

出力結果:

PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function dyadic_function(), 1 passed in Test.php on line 8 and exactly 2 expected in Test.php:3

関数の引数が多いとき:

function dyadic_function($arg1, $arg2): void
{
    // do nothing
}

dyadic_function(1, 2, 3);
echo 'OK';

出力結果:

OK

ちなみに、上記の再現コードはGitHubに置いておいた。

引数を多く渡すコードは実行しても気づけないことがあるので、PhpStormを使ってコーディング中に分かるようにしておく。これがまずは手頃にできる対応だろう。

PhpStormが問題点を警告する様子: