PHP実行時に表示されるエラーの中で発生することが多いエラーが「Fatal error: Call to undefined function」
Fatal error: Call to undefined function は間違っているように見えないプログラムでも発生してしまうことがあります。
今回は「Fatal error: Call to undefined function」エラーの意味や発生原因を解説します。
Fatal error: Call to undefined functionとは
「Fatal error: Call to undefined function」とは、存在しない関数を呼び出そうとしたときに発生するエラーです。
<?php
$a =100;
add($a,200);
?>
3行目でadd関数を呼び出そうとしていますが、add関数はPHP標準ライブラリに実装されていなければ、自分で実装した関数でもないため、存在しない関数を呼ぼうとしてエラーになります。
Fatal error: Call to undefined functionを起こす原因
関数名のスペルミス
一番多いのが、関数名のスペルミスです。
- 関数名に含まれる数字を間違える
- アンダーバー(_)を間違えてつけてしまう
- タイピングミスで存在しない関数名になってしまう
この3パターンが、やってしまいがちなCall to undefined functionエラーの原因です。タイピングミスなど初歩的なミスが原因であることがほとんどなので、エラーが発生した場合は記述してある関数名が正しいかどうかチェックするようにしてください。
関数名の半角アルファベット大文字小文字は区別されない
意外かもしれませんが、PHPでは関数名の半角アルファベットの大文字小文字は区別されません。そのため以下のコードは全く同じadd関数を実行します。
<?php
function add($a,$b){
return $a+$b;
}
echo add(10,5);
echo ADD(10,20);
?>
関数が区別されるということは、Add関数とadd関数2つを同時に実装できないということであり、以下のコードは5行目でエラーになります。
<?php
function add($a,$b){
return $a+$b;
}
function ADD($a,$b){
return $a*$b;
}
echo add(10,5);
?>
PHP特有の挙動ですので、他言語経験者は気をつけてください。
関数の実装忘れ
単純に呼び出そうとしている関数の実装を忘れていたままPHPプログラムを実行してしまって「Call to undefined function」エラーを発生させてしまうことがあります。
珍しいパターンですが、関数を本当に実装したのか確認するようにしてください。
PHPファイルのinclude忘れ
外部ライブラリの関数など別ファイルの関数を呼び出す場合は必ずどこかでincludeして関数がプログラム内に含まれている必要があります。
include 'source.php';
外部ライブラリや別ファイルで実装した関数を利用する場合はinclude文を記述してプログラムの依存関係を解決しておくようにしてください。