Search code examples
phpzend-frameworkglobal-variableszend-session

Define variables outside the PHP class


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.


Solution

  • 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 ?