fatal php error: `cannot redeclare function` while using include_once

fatal php error: `cannot redeclare function` while using include_once

我有一个辅助函数 helper.php,内容为:

<?php
session_start();

function get_result($dbh, $sql) {
    //return mssql_query($sql);
    return $dbh->query($sql);
}
?>

包含在两个文件(information.phpcommercial.php)中,使用:

include_once 'helper.php'

不幸的是,这会生成稍微令人困惑的错误消息:

PHP Fatal error:  Cannot redeclare get_result() (previously declared in helper.php:4) in helper.php on line 4

我知道我不能重新声明函数,因此我使用 include_once 构造,但无论如何它都会尝试重新声明函数。为什么?

如果有帮助;我正在使用 Mustache PHP,所有三个文件都位于 partials 文件夹中。

include_once 确保文件只包含一次。它不检查文件的内容或其中的函数。所以当添加两个具有相同函数名的文件时,出现错误是很自然的!

来自手册:

include_once may be used in cases where the same file might be included and evaluated more than once during a particular execution of a script, so in this case it may help avoid problems such as function redefinitions, variable value reassignments, etc.

斜体表示函数在同一个文件中,不能在不同文件中。

解决此错误的一种方法是将您的辅助函数包装在支票中。

您可以尝试类似的方法:

if (! function_exists('get_result')) {

    function get_result()
    {
        //your code
    }
}

希望对您有所帮助!