Yii2:全局变量

时间:2019-03-16 12:39:58

标签: php global

我需要将行连接起来以便以后输出(降价处理...)。这就是为什么我使用函数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视图处理有关。

1 个答案:

答案 0 :(得分: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 "-";

宾果!