定义PHP类以外的变量
问题描述:
我使用zend。定义PHP类以外的变量
我想在控制器类&以外的其他操作中定义下面的代码。
$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);
}
}
但它不打印,另一方面这个数组中的索引功能,它显示类不在此阵。
这怎么可能。 谢谢。
答
要从方法/函数内部访问一个全局变量,你必须将其声明为global
,方法/函数内部:
class VerifierController extends SystemadminController
{
public function indexAction()
{
global $logInArray;
// action body
print_r($logInArray);
}
}
在手册中,看到了有关Variable scope的部分。
不过,请注意,使用全局变量是不太好的做法:在这种情况下,你的类不再独立的:它依靠的存在,正确的定义,外部变量 - 这是不好的。
也许一个解决方案是:
- 通该变量作为参数传递给该方法?
- 或将它传递给你的类的构造函数,并将其存储在属性中?
- 或者添加一个方法,它将接收该变量并将其存储在一个属性中,如果无法更改构造函数?
答
您可以用许多方式存储用户,并以更干净的方式访问用户。您可以将它存储在Zend_Registry中,然后在需要检索用户的地方使用Zend_Registry :: get('user')。你也可以把它作为请求对象的参数存储起来,然后在控制器中简单地做$ user = $ this - > _ getParam('user');
如果您需要访问许多控制器中从SystemadminController继承的用户数组,您可以将其作为SystemadminController的受保护属性(例如。protected $ _user)进行存储。然后,您需要在子控制器中执行的操作是访问$ this - > _ user。
已测试&工作:) – apis17 2010-03-24 06:34:16