Yii2:视图中的全局变量

问题描述 投票:0回答:1

我需要连接行以便以后输出(降价处理......)。这就是为什么我使用函数l()和全局变量$content

我的观点代码:

$content = "";
function l($line="") {
    global $content;
    $content .= $line."\n";
}
l("hello");
echo "+";
echo $content;
echo "-";

输出

+-

我期待:

+Hello-

为什么?我究竟做错了什么?

我使用的是PHP 7.2.6

编辑:

有几个PHP相关的答案作为this one。但他们没有帮助。我想这个问题与Yii2有关,更具体到Yii2视图处理。

php global
1个回答
1
投票

找到了解决方案!疯!

Yii2呈现视图inside an object instance

这意味着,PHP变量声明

$content = "";

不是全球性的,而是rendering context的本地化。

问题的解决方案是在视图中使变量声明全局化:

global $content = "";

视图中的工作代码现在看起来像这样:

global $content = "";
function l($line="") {
    global $content;
    $content .= $line."\n";
}
l("hello");
echo "+";
echo $content;
echo "-";

答对了!

© www.soinside.com 2019 - 2024. All rights reserved.