<?php
/** * 應用場景:
* 資料庫連線這種比較費資源的操作;
* 我們希望整個應用只實列化一次
* * 結構:
* 4私1公
* 私有化構造方法:防止使用 new 建立多個實列
* 私有化轉殖方法: 防止clone多個實列
* 私有化重建方法:防止反序列化
* 私有化靜態屬性:防止直接訪問儲存實列的屬性
*/class signle1
return static::$instance;
}public function __construct()
public function __clone()
public function __wakeup()
}$obj = signle1::getinstance();
$obj2 = new signle1();
$obj3 = clone $obj2;
$obj4 = unserialize(serialize($obj));
var_dump($obj);
echo '';
var_dump($obj2);
echo '';
var_dump($obj3);
echo '';
var_dump($obj4);
echo '';
class db2
return self::$instance;
}/**
* 防止 new 多個實列
* db2 constructor.
*/private function __construct()
/*** 防止clone 多個實列
*/private function __clone()
/*** 防止反序列化
執行**可以看到 **signle1類實列的控制代碼是不一樣的,
而db類這兩個控制代碼都是5,一直是乙個實列。
PHP設計模式(一)單例模式
在物件導向程式設計中,我們會用到很多設計模式,比如常見的單例模式,工廠模式,模式,觀察者模式等等。每乙個模式,都能解決特定問題,是很多前輩經過很多實踐總結出來的。掌握並靈活運用它們,對於物件導向程式設計有很大的幫助。php中常用的設計模式有 class singlepattern return in...
php設計模式 單例模式
靜態方法所訪問的屬性也必須是static的。靜態方法呼叫靜態變數使用方式是self 靜態變數名 靜態方法呼叫靜態方法使用方式是self 靜態方法名 類的例項可以訪問靜態方法,但不可以訪問靜態變數 package name subpackage name category name author ad...
PHP設計模式 單例模式
單例模式就是保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。通常我們可以讓乙個全域性變數使得乙個物件被訪問,但是不能防止你例項化多個變數,乙個最好的辦法就是讓類自身負責儲存它的唯一例項,這個類可以保證沒有其它例項可被建立,並且他可以提供乙個訪問該例項的方法。下面提供兩種單例模式的例子 例1 ...