单例序列化

2022/6/6 23:20:35

本文主要是介绍单例序列化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

经典的单例模式代码如下

class Singleton
{
    private static $instance;

    // 防止外部实例化
    private function __construct(){}
    // 防止克隆
    private function __clone(){}
    // 防止 serialize
    private function __sleep(){}
   // 防止 unserialize
    private function __wakeup(){}

    public function getInstance()
    {
        if (self::$instance == null) {
            self::$instance = new self;
        }

        return self::$instance;
    }
}

如果希望能够序列化,需要如下改动

class Singleton
{
    private static $instance;

    // 防止外部实例化
    private function __construct(){}
    // 防止克隆
    private function __clone(){}
    // 反序列化后反馈该对象
    private function __wakeup()
    {
        self::$instance = $this;
    }

    public function getInstance()
    {
        if (self::$instance == null) {
            self::$instance = new self;
        }

        return self::$instance;
    }
}

参考

  • https://www.laruence.com/2011/03/18/1909.html
  • https://www.laruence.com/2011/03/18/1916.html


这篇关于单例序列化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程