同じ名前付き引数を2回指定すると Named parameter overwrites エラーになる
PHP8の名前付き引数は、同じパラメータ名を2回指定すると致命的エラーになります。位置引数と名前付き引数を混ぜて書いた際に、同じパラメータへ二重に値を渡してしまうミスで起こります。
エラーメッセージの読み方
Fatal error: Uncaught Error: Named parameter $name overwrites previous argument in main.php:5
main.php- ファイル名
5- 行番号 — 実際にクラッシュした行
Error- 例外クラス — 何が起きたか。ここを検索するのが最短です
Named parameter $name overwrites previous argument- 内容 — どの値が問題だったか
このエラーが出る典型パターン
パターン1
1 <?php 2 function makeUser(string $name, int $age) { 3 return "$name is $age"; 4 } 5 echo makeUser(name: "Al", name: 20); ^
Fatal error: Uncaught Error: Named parameter $name overwrites previous argument in main.php:5
name:を2回指定すると、2回目が1回目を上書きしようとしてエラーになります。2つ目の引数には別のパラメータ名ageを指定する必要があります。
直し方: name を age にします。
広告
広告スロット(未設定)
パターン2
1 <?php 2 function makeProduct(string $title, float $price) { 3 return "$title: $price"; 4 } 5 echo makeProduct(title: "Pen", title: 1.5); ^
Fatal error: Uncaught Error: Named parameter $title overwrites previous argument in main.php:5
title:を2回渡しているため、2回目がエラーになります。2つ目はprice:にする必要があります。
直し方: title を price にします。
パターン3
1 <?php 2 function makeEvent(string $name, string $date) { 3 return "$name on $date"; 4 } 5 echo makeEvent(name: "Party", name: "2026-01-01"); ^
Fatal error: Uncaught Error: Named parameter $name overwrites previous argument in main.php:5
同じname:を2回指定すると上書きとみなされエラーになります。2つ目のパラメータ名はdateにする必要があります。
直し方: name を date にします。
よくある誤解
「後から指定した名前付き引数で上書きされるだけのはず」という思い込みは誤りです。PHPは意図しない上書きをバグの温床とみなし、実行時エラーとして止めます。
まとめ
同じ名前付き引数を2回指定すると Named parameter overwrites エラーになるは上級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。