Zend Framework是否会将变量声明为全局变量?

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行,所以目前不可行.

有谁知道我怎么能解决这个问题?

Ala*_*orm 8

您的原始$ a变量不是全局变量.

在方法内声明的任何变量都是该方法的本地变量,除非它先前已在当前范围内声明为全局变量.

试试这个

public function testglobalAction()
{
    global $a;
    $a = 1;
    function b()
    {
        global $a;
        echo $a*2;
    }

    b();
}
Run Code Online (Sandbox Code Playgroud)