variable instanciar funciones example clases clase php zend-framework global-variables zend-session

instanciar - Definir variables fuera de la clase PHP



php class example (3)

Para acceder a una variable global desde dentro de un método / función, debe declararlo como global , dentro del método / función:

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


En el manual, consulte la sección sobre el alcance de la variable .


Sin embargo, tenga en cuenta que el uso de variables globales no es una buena práctica: en este caso, su clase ya no es independiente: depende de la presencia y la definición correcta de una variable externa, lo cual es malo .

Quizás una solución sería:

  • pasar esa variable como un parámetro para el método?
  • o pasarlo al constructor de tu clase, y almacenarlo en una propiedad?
  • o agregue un método que recibirá esa variable y la almacenará en una propiedad, si no puede cambiar el constructor?

Estoy usando zend.

Quiero definir el código a continuación fuera de la clase de controlador y acceder en diferentes Acciones.

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

Pero no imprime esta matriz en la función de índice, por otra parte muestra esta matriz fuera de la clase.

Como es posible. Gracias.


Puede almacenar al usuario de muchas maneras y acceder a él de una manera más limpia. Puede almacenarlo en Zend_Registry y luego usar Zend_Registry :: get (''user'') donde necesita recuperar al usuario. También puede almacenarlo como un parámetro de objeto de solicitud, y luego en un controlador simplemente haga $ user = $ this -> _ getParam (''user'');

Si necesita acceder a la matriz de usuario en muchos controladores que heredan de SystemadminController, lo que puede hacer es almacenarla como propiedad protegida de SystemadminController (por ejemplo, protected $ _user). Entonces, todo lo que necesita hacer en los controladores secundarios es acceder $ this -> _ user.