Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
致命的php错误:`使用include_时无法重新声明函数'_Php_Php Include_Mustache.php - Fatal编程技术网

致命的php错误:`使用include_时无法重新声明函数'

致命的php错误:`使用include_时无法重新声明函数',php,php-include,mustache.php,Php,Php Include,Mustache.php,我有一个helper函数helper.php,包含以下内容: <?php session_start(); function get_result($dbh, $sql) { //return mssql_query($sql); return $dbh->query($sql); } ?> 不幸的是,这会产生稍微令人困惑的错误消息: PHP Fatal error: Cannot redeclare get_result() (previously de

我有一个helper函数helper.php,包含以下内容:

<?php
session_start();

function get_result($dbh, $sql) {
    //return mssql_query($sql);
    return $dbh->query($sql);
}
?>
不幸的是,这会产生稍微令人困惑的错误消息:

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 在特定的执行过程中多次包括和评估 一个脚本,所以在这种情况下,它可能有助于避免诸如函数之类的问题 重新定义、变量值重新分配等


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

避免此错误的一种方法是将助手函数包装在复选框中

您可以尝试以下方法:

if (! function_exists('get_result')) {

    function get_result()
    {
        //your code
    }
}

希望这有帮助

helper.php的内容是什么?您显示了help.php的内容。另外,您确定helper.php的每个包含都是通过include_完成的吗?@DaanMeijer-很抱歉,这是一个拼写错误,应该是helper.php。固定的Great:现在,我的另一个问题是:你确定每个包含都通过include_一次吗?@DaanMeijer-Yes你可能会在PHP中偶然发现一个bug;或者,您可能错过了include语句。您可以通过将debug_print_backtrace放入调试;在helper.php中。应该向您显示包含helper.php的文件。我使用此文件来绕过重新声明,但对我来说似乎是一个快速修复。。。我现在对它很满意,因为它有助于解决问题,而且我还有一点时间,但我会在将来重新考虑这个问题,看看我是否能做到这一点,而不用求助于“修复”,接受这个作为答案,因为它回答了我的实际问题,为什么会发生这种情况?最好的
if (! function_exists('get_result')) {

    function get_result()
    {
        //your code
    }
}