首頁  >  文章  >  後端開發  >  php如何實作單例模式

php如何實作單例模式

王林
王林原創
2020-07-23 15:23:473665瀏覽

php實作單例模式的方法:要實作單例模式需要保證一個類別只有一個實例,並提供一個存取它的全域存取點。單例模式不會建立實例副本,而是會向單例類別內部儲存的實例傳回一個參考。

php如何實作單例模式

單例模式的定義:

#(推薦教學:php教學

保證一個類別只有一個實例,並提供一個存取它的全域存取點。它不會建立實例副本,而是會向單例類別內部儲存的實例傳回一個參考。

單例模式的三要素:

  • 需要一個保存類別的唯一實例的靜態成員變數。

  • 建構子和複製函式必須宣告為私有的,防止外部程式建立或複製實例副本。

  • 必須提供一個存取這個實例的公共靜態方法,從而傳回唯一實例的一個參考。

程式碼實作:

class Singleton
{
    //创建静态私有的变量保存该类对象
    static private $instance;

    //防止使用new直接创建对象
    private function __construct(){}

    //防止使用clone克隆对象
    private function __clone(){}

    static public function getInstance()
    {
        //判断$instance是否是Singleton的对象,不是则创建
        if (!self::$instance instanceof self) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    public function test()
    {
        echo "我是一个单例模式";
    }
}

$sing = Singleton::getInstance();
$sing->test();
$sing2 = new Singleton(); //Fatal error: Uncaught Error: Call to private Singleton::__construct() from invalid context in
$sing3 = clone $sing; //Fatal error: Uncaught Error: Call to private Singleton::__clone() from context

以上是php如何實作單例模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn