为了快速总结我的问题,我只是将(http://php.net/manual/en/language.variables.scope.php)的示例复制到我的一个视图中,并想知道为什么它在我的屏幕上没有回应。
这是php.net的例子:
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
我预计屏幕上会显示'3',但$ b仍然会'2'返回.. 好吧,我用不同的例子测试了这个行为大约3个小时,似乎kohana做了一些棘手的事情。 我以为Kohana只将View :: _数据提取到本地范围内,一切都会好的,但现在我对此一无所知。
有人可以解释一下这种行为吗?
How can I wrap PHP legacy code in Kohana?无法帮助我..
顺便说一句,对不起我的语言错误!
更新
我知道使用全局变量很糟糕,但我的干净方法昨天不起作用.. 但现在我不知道为什么一切都有效,也许有一个缓存问题。
但除此之外,我理解了我给出的例子中的错误,谢谢。 似乎它与输出缓冲无关。
答案 0 :(得分:3)
你可能不在全球范围内。因此,所有变量都应该加上global
之类的
<?php
global $a = 1;
global $b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
PS:全局变量是万恶之源。没有它们,一切都可以而且应该实施。