在另一个类中设置静态变量(Zend Framework)

时间:2014-05-31 11:44:53

标签: php zend-framework static


我想在Zend Framework中使用像$ _SESSION这样的变量,我使用一个类来保存一个静态变量,如下所示:

class Login {
    private static $login = "false";
    public static function changeStatus($status)
    {
        self::$login = $status;
        print_r(self::$login);
    }
    public static function returnStatus()
    {
        return self::$login;
    }
}

之后,当我成功登录时,我将调用Login :: changeStatus函数并传递" true"在AuthAction中使用此函数,如下所示:

Login::changeStatus("true");
$this->_redirect('/user/list');

但是在listAction中,我试图获得Login :: $ login的值,它仍然是" false"。
那么如何将Login :: $ login更改为" true"当我从listAction()访​​问它时,我会得到" true"?

我尝试使用Zend_Registry,因为doydoy44说,但我收到了这条消息"没有注册密钥' login'" :(

2 个答案:

答案 0 :(得分:1)

你的静态变量被声明为私有,所以我认为你不能从你的控制器访问这个变量Login :: $ login。

最简单的方法应该是将此变量声明为public,如果这些变量无用,请停止使用任何访问器。 (或在控制器中使用您的Login :: returnStatus()方法)

答案 1 :(得分:0)

您可以像这样使用Zend_Registry

// In authAction instead of Login::changeStatus("true"); :
Zend_Registry::set('login', true);

// In listAction:
if (Zend_Registry::isRegistered('login'))
    $login = Zend_Registry::get('login');
else
    $login = false;

我希望它会对你有所帮助。 :)