Mar*_*cel 1 php zend-framework global-variables
我正在将第三方代码集成到我在Zend Framework中编写的Web应用程序中.
我想要集成的代码将变量声明为全局变量.它可以单独工作,但不是在Zend Framework中包含它时.最初我怀疑Zend Framework中有一些东西禁用了全局变量的声明.我在控制器中有以下测试代码:
public function testglobalAction()
{
$a = 1;
function b()
{
global $a;
echo $a*2;
}
b();
}
Run Code Online (Sandbox Code Playgroud)
当我运行时,它打印出0,而不是2.最重要的是,在同一个Web服务器上运行相同的代码打印输出2.
我知道我可以替换所有全局实例以使用Zend Registry.然而,一个grep告诉我,我必须改变大约700行,所以目前不可行.
有谁知道我怎么能解决这个问题?
您的原始$ a变量不是全局变量.
在方法内声明的任何变量都是该方法的本地变量,除非它先前已在当前范围内声明为全局变量.
试试这个
public function testglobalAction()
{
global $a;
$a = 1;
function b()
{
global $a;
echo $a*2;
}
b();
}
Run Code Online (Sandbox Code Playgroud)