致命的php错误:`使用include_时无法重新声明函数'
我有一个helper函数helper.php,包含以下内容:致命的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
<?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
}
}