php - 静态对象中的魔术方法

标签 php oop session static-methods

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

$_SESSION['foo'] = $bar;

我这样做:

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

set 函数会做这样的事情:

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

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

Session['foo'] = $bar

或者像这样:

Session->foo = $bar

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

最佳答案

让你的 session 类成为单例?

class Session
{
   public static $instance;

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

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

然后像这样使用它:

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

关于php - 静态对象中的魔术方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8521486/

相关文章:

php - 为什么php中的使用语言构造无法看到变量值的变化?

php - Symfony2 : Hide form field with display:none

java - 在 Spring MVC 中处理 session 的好方法

javascript - 我如何将 JavaScript confirm 变量传递给 php 变量

javascript - 在没有加载页面的情况下在 php 和 javascript 之间传递变量

java - Method 和 Constructor<?> 都继承自 Member,都具有 getExceptionTypes() 方法。在这种情况下如何避免代码重复?

java - 默认情况下,Checkstyle 中不允许使用 protected 变量,但是在枚举中又如何呢?

c++ - 编译器优化还是我的误区

java - tomcat如何处理重启之间的 session ?

python - 为什么某些 mysql 连接在删除 + 插入后选择 mysql 数据库中的旧数据?