涉嫌在PHP中重新声明函数

时间:2015-04-29 12:07:38

标签: php function declaration fatal-error redeclaration

我收到了PHP致命错误:

  

致命错误:无法在第111行的path / src / scripts / php / functions.php中重新声明getString()(先前在path / src / scripts / php / functions.php:66中声明)

包含以下文件:

  1. index.php ,"是"页面
  2. functions.php ,由 index.php 通过require_once调用。它包括所有功能和内容
  3. error.php 当出现给定函数中的错误时,由 functions.php 调用。 error.php 调用 functions.php ,但只能通过require_once,所以在这种情况下它不应该调用 functions.php 第二次
  4. 我通常知道这个错误意味着什么。但是这个函数只声明了一次。此外,只有当我在 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;
        }
    }
    }
    

    当我在 index.php 中调用它时,它可以工作:

    <? echo getString("00004", $prefLang); ?>
    

    但是,当我从 functions.php 中的另一个函数中调用该函数时,它不起作用:

    $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;
    

    调用getString()的函数没有任何问题,因为当我用硬编码文本替换它时,它会起作用。

    修改

    我&#34;解决了#34;删除调用 error.php exits的代码会导致致命错误。但是,现在, getString()函数仍然无法正常运行。直接从index.php(如上所述)调用它可以正常工作,但在另一个函数中调用它会导致根本没有输出。

0 个答案:

没有答案