首頁 >後端開發 >PHP問題 >php 能實作單例嗎

php 能實作單例嗎

藏色散人
藏色散人原創
2021-04-01 09:25:551549瀏覽

php能實作單例,其實作一個單例的方法:1、申請一個私有的靜態成員變數來保存該類別的唯一實例;2、宣告私有的建構方法,防止類別外部建立物件;3、宣告一個靜態公用方法,供外部取得唯一實例。

php 能實作單例嗎

本文操作環境:Windows7系統、PHP7.1版,DELL G3電腦

PHP如何實作單一範例

  • 申請一個私有的靜態成員變數來保存該類別的唯一實例

  • 聲明私有的建構方法,防止類別外部建立對象

  • 宣告一個靜態公用方法,供外部取得唯一實例

#這三步驟走完,就是一個單例了,但是這個單例子是不安全的,想要這個單例安全,還需以下兩步驟(如有不完善還請補充)

  • 聲明私有的複製方法,防止物件被複製

  • 重寫__sleep方法,將傳回置空,防止序列化反序列化獲得新的物件

<?php
/**
 * 单列模式(防止对象克隆、对象序列化反序列化)
 * Created by PhpStorm.
 * User: Jeaforea
 * Date: 2019/3/14
 * Time: 17:56
 */
namespace Kanshenmekan\Buzhunkan\Zaikandasini;
class SetSingleton{
    private static $new; //申请一个私有的静态成员变量来保存该类的唯一实例
    private function __construct() {} //声明私有的构造方法,防止类外部创建对象
    public static function instance () { //声明一个静态公共方法,供外部获取唯一实例
        if (!(self::$new instanceof self)) {
            self::$new = new self;
        }
        return self::$new;
    }
    private function __clone() {} //声明私有的克隆方法,防止对象被克隆
    public function __sleep() { //重写__sleep方法,将返回置空,防止序列化反序列化获得新的对象
        return [];
    }
}

【推薦學習:PHP影片教學

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

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