PHPでCannot redeclare ~ (previously declared in ~)in ~

PHPで見慣れないエラーが出たのでメモ

Fatal error: Cannot redeclare myFunc() (previously declared in ~) in ~

「その関数は既に宣言されてるから再宣言はできないよ!」

ってことらしい。

コードを見なおしてみるとループの中で関数を宣言していた。

関数の宣言をループの外でしてあげれば済む話なんだけどそうはしたくない・・・

そんな時はfunction_exists()で関数が既に宣言されているかどうか調べる。

bool function_exists(string $function_name)

こんな感じでループの中で関数を宣言しても大丈夫

    $i = 0;
    while($i < 10){
       if(!function_exists('myFunc')){
          function myFunc(){}
       }
       $i++;
    }