我正在使用zend。
我想在控制器类之外定义下面的代码&访问不同的操作。
$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);
}
}
但是它不会在索引函数中打印这个数组,另一方面它在类之外显示这个数组。
怎么可能。 感谢。
答案 0 :(得分:2)
要从方法/函数内部访问全局变量,必须在方法/函数内声明它为global
:
class VerifierController extends SystemadminController
{
public function indexAction()
{
global $logInArray;
// action body
print_r($logInArray);
}
}
在手册中,请参阅有关Variable scope。
不过,请注意,使用全局变量并不是一个好习惯:在这种情况下,您的类不再是独立的:它依赖于外部变量的存在和正确定义 - 这是坏
也许解决方案是:
答案 1 :(得分:1)
的print_r($ GLOBALS [ 'logInArray']);
答案 2 :(得分:0)
您可以通过多种方式存储用户,并以更干净的方式访问它。您可以将它存储在Zend_Registry中,然后使用Zend_Registry :: get('user')来检索用户。您还可以将其存储为请求对象的参数,然后在控制器中只需执行$ user = $ this-> _getParam('user');
如果您需要访问从SystemadminController继承的许多控制器中的用户数组,您可以将其存储为SystemadminController的受保护属性(例如protected $ _user)。然后,您需要在子控制器中执行的操作是访问$ this-> _user。