申请一个私有的静态成员变量来保存该类的唯一实例
声明私有的构造方法,防止类外部创建对象
声明一个静态公共方法,供外部获取唯一实例
这三步走完,就是一个单例了,但是这个单例是不安全的,想要这个单例安全,还需以下两步(如有不完善还请补充)

声明私有的克隆方法,防止对象被克隆
重写__sleep方法,将返回置空,防止序列化反序列化获得新的对象

<?php
    class Singleton{
        #申请一个私有静态成员变量来保存该类的唯一实例
        private static $object=NULL;
        //声明私有构造方法,防止类外无限部创建对象
        private function __construct(){
            echo __METHOD__,'<br/>';
        }
        //声明一个静态的公告方法,提供类外部创建对象
        public static function getInsance(){
            if (!(self::$object instanceof self)){
                self::$object=new self();
            }
            return self::$object;
        }
        //声明私有的克隆方法,防止对象被克隆
        private function __clone()
        {
            // TODO: Implement __clone() method.
        }
        //重写sleep方法,将返回置空,防止序列化反序列化获得新对象。
        public function __sleep()
        {
            // TODO: Implement __sleep() method.
            return [];
        }

    }
    $sl=Singleton::getInsance();
    $sl2=Singleton::getInsance();
    var_dump($sl);
    echo "<br/>";
    var_dump($sl2);
?>