未定義の関数を呼び出したエラーの原因と直し方
存在しない名前の関数を呼び出したときに出るエラーです。関数名のタイプミスのほか、必要なファイルをrequireし忘れているときにも起こります。
エラーメッセージの読み方
Fatal error: Uncaught Error: Call to undefined function calcTtal() in main.php:5
main.php- ファイル名
5- 行番号 — 実際にクラッシュした行
Error- 例外クラス — 何が起きたか。ここを検索するのが最短です
Call to undefined function calcTtal()- 内容 — どの値が問題だったか
このエラーが出る典型パターン
パターン1
1 <?php 2 function calcTotal($a, $b) { 3 return $a + $b; 4 } 5 echo calcTtal (1, 2); ^
Fatal error: Uncaught Error: Call to undefined function calcTtal() in main.php:5
定義した関数名はcalcTotalですが、calcTtalという1文字違いの名前を呼び出しています。存在しない関数名はここで致命的エラーになります。
直し方: calcTtal を calcTotal にします。
広告
広告スロット(未設定)
パターン2
1 <?php 2 function sayHi($name) { 3 echo "Hi " . $name; 4 } 5 sayHii("Al"); ^
Fatal error: Uncaught Error: Call to undefined function sayHii() in main.php:5
sayHiiという名前の関数は定義されていません。1文字でも違えば別の名前として扱われます。
直し方: sayHii を sayHi にします。
パターン3
1 <?php 2 function sumArray($arr) { 3 return array_sum($arr); 4 } 5 echo sumArry ([1, 2, 3]); ^
Fatal error: Uncaught Error: Call to undefined function sumArry() in main.php:5
sumArryという名前は定義されていません。定義済みのsumArrayを呼び出す必要があります。
直し方: sumArry を sumArray にします。
よくある誤解
「関数名を間違えてもPHPが似た名前を探して実行してくれる」ということはありません。1文字でも違えば別の名前として扱われ、その場でプログラムが停止します。
まとめ
未定義の関数を呼び出したエラーの原因と直し方は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。