PHP中函数的重新声明
我收到一个PHP致命错误: 致命错误:无法在第111行的path/src/scripts/php/functions.php中重新声明getString()(以前在path/src/scripts/php/functions.php:66中声明) 这些文件包括:PHP中函数的重新声明,php,function,declaration,fatal-error,redeclaration,Php,Function,Declaration,Fatal Error,Redeclaration,我收到一个PHP致命错误: 致命错误:无法在第111行的path/src/scripts/php/functions.php中重新声明getString()(以前在path/src/scripts/php/functions.php:66中声明) 这些文件包括: index.php哪个“是”页面 functions.php由index.php通过require\u调用一次。它包括所有的功能和东西 error.php当给定函数中出现错误时,functions.php调用该函数。error.php调
require\u调用一次
。它包括所有的功能和东西require_一次
,因此在这种情况下,它不应该第二次调用functions.phpfunction getString($key, $lang) {
if (!is_string($key) || !is_string($lang)) {
$fehlercode = "StringNoString";
require_once ("path/src/logs/error.php");
exit;
}
$urkey = $key;
$key = (String) $key;
if (strlen($key) < 5) {
switch (strlen($key)) {
case 4:
$key = "0".$key;
break;
case 3:
$key = "00".$key;
break;
case 2:
$key = "000".$key;
break;
case 1:
$key = "0000".$key;
break;
default:
break;
}
}
global $de_Array, $en_Array;
if ($lang == "en") {
if (array_key_exists($key, $en_Array)) {
return $en_Array[$key];
} else {
$fehlercode = "NoStringOn(".$key."en)";
require_once ("path/src/logs/error.php");
exit;
}
} else {
if (array_key_exists($key, $de_Array)) {
return $de_Array[$key];
} else {
$fehlercode = "NoStringOn(".$key."de)";
require_once ("path/src/logs/error.php");
exit;
}
}
}
函数getString($key,$lang){
如果(!is_string($key)| |!is_string($lang)){
$fehlercode=“StringNoString”;
require_once(“path/src/logs/error.php”);
出口
}
$urkey=$key;
$key=(字符串)$key;
如果(strlen($key)<5){
交换机(strlen($key)){
案例4:
$key=“0”。$key;
打破
案例3:
$key=“00”。$key;
打破
案例2:
$key=“000”。$key;
打破
案例1:
$key=“0000”。$key;
打破
违约:
打破
}
}
全局$de_数组,$en_数组;
如果($lang==“en”){
如果(数组\键\存在($key,$en\数组)){
返回$en_数组[$key];
}否则{
$fehlercode=“NoStringOn(.$key.en)”;
require_once(“path/src/logs/error.php”);
出口
}
}否则{
如果(数组\键\存在($key,$de\数组)){
返回$de_数组[$key];
}否则{
$fehlercode=“NoStringOn(.$key.de)”;
require_once(“path/src/logs/error.php”);
出口
}
}
}
当我在index.php中这样调用它时,它可以工作:
<? echo getString("00004", $prefLang); ?>
$faqs = '<div class="zweispaltigEZ"><div class="left"><h3>'.getString("00087", $prefLang).'</h3><ol>'.$questions.'</ol></div><div class="right"><h3>'.getString("00088", $prefLang).'</h3>'.$answers.'</div></div>';
return $faqs;
但它不起作用,当我从functions.php中的另一个函数中调用该函数时,如下所示:
<? echo getString("00004", $prefLang); ?>
$faqs = '<div class="zweispaltigEZ"><div class="left"><h3>'.getString("00087", $prefLang).'</h3><ol>'.$questions.'</ol></div><div class="right"><h3>'.getString("00088", $prefLang).'</h3>'.$answers.'</div></div>';
return $faqs;
$FAQ='.getString(“00087”,$prefLang)。'.$questions.'.getString(“00088”,$prefLang)。'.$answers.';
返回$FAQ;
调用getString()
的函数没有什么问题,因为当我用硬编码文本替换它时,它可以工作
编辑
我通过删除调用error.php的代码和退出的
来“解决”这个致命错误。但是,现在getString()函数仍然不能正常工作。直接从index.php调用它(如上所述)效果很好,但是在另一个函数中调用它会导致根本没有输出。functions.php的第66行和第111行中有什么内容?您使用的是require
/include
还是require\u once
/include\u once
?@Alvarontro第66行:函数getString($key,$lang){
第111行:}
@MatteoTassinari如上所述,我只使用require_一次
@bendenfield尝试在functions.php文件的顶部添加如下内容:if(defined('MY_DEBUG')){var_dump(DEBUG_backtrace())}else{define('MY_DEBUG',1)}
这将告诉您第二次包含文件的位置。仅通过查看getString()
的内容几乎无法判断。我们需要查看更多代码和更详细的错误消息来解决此问题。