静态对象中的魔术方法

时间:2011-12-15 14:18:18

标签: php oop session static-methods

我正在努力实现这一目标。我有会话管理器类,它是我为我的框架开发的东西。我需要有唯一的会话密钥,所以不要做这样的事情:

$_SESSION['foo'] = $bar;

我这样做:

Session::set('foo',$bar);

并且set函数将执行以下操作:

$_SESSION[$unique.'foo'] = $bar;

很好,它有效,但我想像这样使用它:

Session['foo'] = $bar

或者像这样:

Session->foo = $bar

我发现我无法使用 - >在静态对象中,我也不能使用像__set和__get这样的魔术函数。那么,有什么办法可以实现这种行为吗?

2 个答案:

答案 0 :(得分:3)

让你的会话课成为单身人士吗?

class Session
{
   public static $instance;

   public static function init()
   {
        self::$instance = new Session();
   }    

    public function __get($key)
    {
        return $_SESSION[$key];
    }
}

然后像这样使用它:

echo(Session::$instance->foo);

答案 1 :(得分:0)

你必须使用__call然后

http://php.net/manual/en/language.oop5.overloading.php

Session['foo'] = $bar无法使用。