在 PHP 类之外定义变量

我正在使用 zend.

I m using zend.

我想在控制器类之外定义以下代码 &在不同的操作中访问.

I want to define the below code outside the controller class & access in different Actions.

$user = new Zend_Session_Namespace('user');
$logInArray = array();
$logInArray['userId'] = $user->userid;
$logInArray['orgId'] = $user->authOrgId;

class VerifierController extends SystemadminController
{
 public function indexAction()
    {
        // action body
        print_r($logInArray);  
    }
}

但它不会在索引函数中打印此数组,另一方面它会在类之外显示此数组.

But it does not print this array in index function on the other hand it show this array outside the class.

怎么可能.谢谢.

推荐答案

要从方法/函数内部访问全局变量,您必须在方法/函数内部将其声明为 global :

To access a global variable from inside a method/function, you have to declare it as global, inside the method/function :

class VerifierController extends SystemadminController
{
 public function indexAction()
    {
        global $logInArray;
        // action body
        print_r($logInArray);  
    }
}


在手册中,请参阅关于变量范围.


不过,请注意,使用全局变量并不是一个很好的做法:在这种情况下,您的类不再独立:它依赖于外部变量的存在和正确定义——这是坏.

也许解决方案是:

  • 将该变量作为参数传递给方法?
  • 或将其传递给类的构造函数,并将其存储在属性中?
  • 或者添加一个方法来接收该变量,并将其存储在一个属性中,如果您无法更改构造函数?

相关文章