php单例模式(Singleton)

时间:2019-07-09作者:klpeng分类:IT综合浏览:888评论:0

用php编写一个单例, 需要考虑几点:

1、对象不能new,将构造函数私有

2、对象不能继承,将类设置为final

3、对象不能克隆,将克隆方法私有

4、对象序列化,将wakeup私有

5、在内部做判断,如果已经实例化了对象,就直接返回。

应用场景: 适用于在整个程序的生命周期中都只有一个实例的对象。例如数据操作类、日志记录类

<?php

final class Singleton
{
    private static $instance = null;

    //禁止构造函数,避免外部new
    private function __construct()
    {}
    //禁止克隆
    private function __clone()
    {}
    //禁止序列化
    private function __wakeup()
    {}
    //对外提供一个静态方法
    public static function getInstance(): Singleton
    {
        if (self::$instance === null) {
            //如果没有,则创建当前类的实例
            self::$instance = new self();
        }
        //如果已经有了当前类实例,就直接返回,不要重复创建类实例
        return self::$instance;
    }
    //other
}

$p1 = Singleton::getInstance();
$p2 = Singleton::getInstance();
var_dump($p1, $p2, $p1 === $p2);

 

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢