web-dev-qa-db-ja.com

PHP:関数の再宣言を避ける方法は?

次のようなエラーが発生する傾向があります。

致命的なエラー:get_raw_data_list()を再宣言できません(以前は/var/www/codes/handlers/make_a_thread/get_raw_data_list.php:7で宣言されていました)/var/www/codes/handlers/make_a_thread/get_raw_data_list.phpの19行目

エラーを回避するにはどうすればよいですか?関数を宣言する前に、関数が宣言されているかどうかを確認するIF句を作成することはできますか?

32
hhh

使用する - require_once または include_onceinclude または require とは対照的に、関数を含むファイルをインクルードします。

_onceincluderequireの兄弟が強制的にPHPに、ファイルがすでに含まれているか、必要かどうかを確認させます。もしそうなら、再度include/requireしないでください。これにより、 'cannot rexclare x function ...'を防ぐことができます致命的なエラー。

28
karim79
if(!function_exists("get_raw_data_list")) {
... define function here ...
}

http://us.php.net/function_exists

83
Dooltaz

" function_exists "は、関数がすでに宣言されているかどうかを通知します。ファイルを複数回インクルードすることに問題があるのではないかと思います。ファイルをインクルードするときにrequire_onceまたはinclude_onceを使用していますか、それともrequire/includeを使用していますか?

8
smack0007

クラスを扱っている場合、method_exists()があなたが探しているものかもしれません:

if(!method_exists(__CLASS__, 'function_name')){
    function function_name(){

    }
}

これにより、現在のクラスがチェックされ、関数function_name宣言する前に存在しません

5
Serj Sagan