[PHP]Fatal error: Cannot redeclare {function_name}

Read More

Fatal error: Cannot redeclare {function_name} in C:/{file_path} on line {line_number}
※function_name, file_path, line_numberにはそれぞれ自分の環境の値が入る。


これはどういうものかと言うと、
一回の処理の中で 同じ関数名を2回以上定義していると発生するFatalエラー。


具体例。
function test() {
  print 1;
}

function test() {
  print 2;
}
test();




グローバル関数として定義していると発生するものだが、
クラスのメンバ関数として同名関数を2回以上定義しても上記と同じFatalエラーが発生する。
※ただしオーバライドは除く


この回避策としてfunction_exists()を使って関数を定義する方法がある。

またinclude_once()やrequire_once()を使ってファイルの読み込み制御することで解決する場合もある。


しかしこれらの回避策以前にまず関数名が他とかぶらないような付け方を工夫すべきであるし、読み込むファイルの場所や順序を工夫したりするべきである。


もしこのエラーが発生したのであれば、根本となる問題がないか、これを機に処理全体を見直すべきかもしれない。