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が問題点を警告する様子: