php函数全局定义的变量不适用于Yii

byo*_*ngb 2 php yii

我正在尝试添加到Yii项目的一些遗留代码存在问题.

它与全局变量有关,我很清楚应该将它作为参数传递,但是由于这个旧代码并且在其他项目中使用,因此重写它并不是真正的选择.

$testVar = '123';
function testOutput() {
   global $testVar;
   var_dump($testVar);
}
testOutput();
Run Code Online (Sandbox Code Playgroud)

现在,如果我将这个文件包含在普通的php文件中,它可以工作并输出

string '123' (length=3)
Run Code Online (Sandbox Code Playgroud)

但是,如果我将此文件包含在Yii控制器中,甚至包含在模板中,则输出此文件

null
Run Code Online (Sandbox Code Playgroud)

我试图搜索这个问题,但我得到了一些关于人们错误地使用全局变量的结果.我确信它实际上不是Yii问题,但很可能是Yii设置的php_ini设置,但是在搜索代码或Yii文档时我找不到任何可以解释这一点的内容.

可以通过使用我的第一个代码块创建文件然后将其包含在Yii模板或控制器中来测试此示例.我甚至用一个干净的Yii项目测试它.

我希望通过用Yii标记这个问题,我没有损害我解决这个问题的机会,因为我觉得这不仅仅是Yii的具体问题.

任何见解将不胜感激.

Mar*_*o D 5

如果你喜欢这个,它会工作,我只是用Yii控制器测试

global $testVar;
$testVar = '123';
function testOutput() {
   global $testVar;
   var_dump($testVar);
}
testOutput();
Run Code Online (Sandbox Code Playgroud)