PHP中函数的重新声明

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调

我收到一个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调用functions.php,但只能通过
    require_一次
    ,因此在这种情况下,它不应该第二次调用functions.php
  • 我通常知道那个错误是什么意思。但是这个函数只声明一次。此外,只有在functions.php中的另一个函数中调用它时,才会发生错误

    以下是函数:

    function 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()
    的内容几乎无法判断。我们需要查看更多代码和更详细的错误消息来解决此问题。