我正在尝试添加到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的具体问题.
任何见解将不胜感激.
如果你喜欢这个,它会工作,我只是用Yii控制器测试
global $testVar;
$testVar = '123';
function testOutput() {
global $testVar;
var_dump($testVar);
}
testOutput();
Run Code Online (Sandbox Code Playgroud)