37

我倾向于得到错误,例如:

致命错误:无法在第 19 行的 /var/www/codes/handlers/make_a_thread/get_raw_data_list.php 中重新声明 get_raw_data_list()(之前在 /var/www/codes/handlers/make_a_thread/get_raw_data_list.php:7 中声明)

我怎样才能避免错误?是否可以创建一个 IF 子句来检查函数在声明之前是否已声明?

4

4 回答 4

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

http://us.php.net/function_exists

于 2009-09-05T18:50:08.600 回答
30

在包含包含您的函数的文件时使用require_onceinclude_once相对于include或。require

and的_once兄弟姐妹将强制 PHP 检查文件是否已经被包含/需要,如果是,则不再/ it,从而防止“无法重新声明 x 函数... ”的致命错误。includerequireincluderequire

于 2009-09-05T18:49:23.220 回答
8

function_exists ”会告诉你一个函数是否已经被声明。尽管我怀疑您可能在多次包含文件时遇到问题。当你包含一个文件时,你是使用 require_once 还是 include_once 还是只需要/包含?

于 2009-09-05T18:50:15.520 回答
5

如果您正在处理类method_exists()可能是您正在寻找的:

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

    }
}

这将在尝试声明之前检查当前类以使该函数function_name不存在

于 2012-06-16T05:09:15.473 回答