Zend Framework是否会将变量声明为全局变量?
-
05-07-2019 - |
题
我正在将第三方代码集成到我在Zend Framework中编写的Web应用程序中。
我要整合的代码将变量声明为全局变量。它可以独立工作,但不是在Zend Framework中包含它时。最初我怀疑Zend Framework中有一些东西禁用了全局变量的声明。我在控制器中有以下测试代码:
public function testglobalAction()
{
$a = 1;
function b()
{
global $a;
echo $a*2;
}
b();
}
当我运行时,它打印出0,而不是2.最重要的是,在同一个Web服务器上运行相同的代码打印出2。
我知道我可以替换所有全局实例以使用Zend Registry。然而,一个grep告诉我,我必须改变大约700行,所以目前不可行。
有谁知道如何解决这个问题?
解决方案
您的原始$ a变量不是全局的。
在方法内部声明的任何变量都是该方法的本地变量,除非先前已在当前范围内声明为全局变量。
试试这个
public function testglobalAction()
{
global $a;
$a = 1;
function b()
{
global $a;
echo $a*2;
}
b();
}
其他提示
没有。 Zend Framework不会禁用全局变量,因为它是不可能的。 $ GLOBALS数组由php.ini register_globals
指令控制。它不能在运行时使用 ini_set
进行更改。
请参阅文档以供参考。
注意:检查.htaccess文件是否有任何每个目录 php_value
覆盖。
不隶属于 StackOverflow