문제

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.

How it is possible. Thanks.

도움이 되었습니까?

해결책

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);  
    }
}


In the manual, see the section about Variable scope.


Still, note that using global variables is not quite a good practice : in this case, your class is not independant anymore : it relies on the presence, and correct definition, of an external variable -- which is bad.

Maybe a solution would be to :

  • pass that variable as a parameter to the method ?
  • or pass it to the constructor of your class, and store it in a property ?
  • or add a method that will receive that variable, and store it in a property, if you cannot change the constructor ?

다른 팁

You can store the user in many ways and access it in more clean manner. You can store it in Zend_Registry and then use Zend_Registry::get('user') where you need to retrieve the user. You can also store it as a parameter of request object, and then in a controller simply do $user = $this->_getParam('user');

If you need access to the user array in many controllers that inherit from the SystemadminController, what you can do is store it as a protected property of the SystemadminController (eg. protected $_user). Then all you need to do in child controllers is access $this->_user.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top