$ GLOBALS在另一个php文件中不可见

时间:2016-03-15 14:06:40

标签: php scope global-variables

我正在尝试使用$ GLOBALS为我的应用程序定义一个国际字典。字符串位于不同的文件中,每种语言一个。像这样:

PT_BR.txt:
title=Meu aplicativo
usr=Usuário

EN_US.txt:
title=My app
usr=User

然后我有一个函数来读取txt文件并填充$ GLOBALS数组,其他函数从$ GLOBALS获取一个值并将其返回给脚本。两者都在functions.php中,它包含在每个必要的文件中。

// functions.php
function readDict($lang) {
    $F = $lang.'.txt';
    // (...)
    $GLOBALS[$var] = $val;
}
function txt($line) {
    if (isset($GLOBALS[$line])) {
        return $GLOBALS[$line];
    } else {
        return "($line)";
    }
}

当用户选择语言时,我调用main.php中的第一个函数:

readDict($language);

当我从main.php调用txt('some_variable')时,它可以正常工作。但是当我从另一个文件中调用它时,却没有。例如,当我打电话

include('functions.php');
echo txt('esp.col');
来自addEsp.php的

,它看不到$ GLOBALS ['esp.col'],它在main.php中有效。为什么呢?

1 个答案:

答案 0 :(得分:0)

$GLOBALS = [];
function readDict($lang) {
    $F = $lang.'.txt';
    // (...)
    $GLOBALS[$var] = $val;
}
function txt($line) {
    if (isset($GLOBALS[$line])) {
        return $GLOBALS[$line];
    } else {
        return "($line)";
    }
}

你可以试试这个