這篇文章對于PHP單例模式的解釋并不一定完善!只是舉一個實例而已,目的是讓我自己通過一個實例可以加深對單例模式的理解!在此,僅供參考!
單例:可以簡單的理解是通過一個類,只能實例化單個對象,不能實例化多個對象!
html' target='_blank'>class e {
public $uname;
static $obj = NULL; //定義一個靜態屬性
private function __construct() { //在構造方法前使用private屬性,目的是不能在類的外部實例化對象,
//即不能$a=new e();
} //如果要使用new關鍵字來實例化對象就會調用該構造函數,
//而該函數已經被修飾為private,此時使用new關鍵字實例化對象時會報錯。
static function getObj() {
if (is_null(self::$obj)) {
self::$obj = new e(); //在類的內部實例化對象賦給靜態屬性;在第一次實例化對象時,
} //$obj會被賦值,以后再實例化對象時,
return self::$obj; //因為有這里的判斷所以不會重復實例對象只會實例化一次對象;
} //多次實例化對象時,只是把對象的引用賦值給了變量,不會再次實例化對象
}
$d = e::getObj();
$d->uname = 100;
echo $d->uname; //100
$e = e::getObj();
$e->uname = 200;
echo $d->uname; //會輸出200,$d對象的uname值也被該表了,因為$e和$d指向同一個對象
echo $e->uname; //會輸出200
PHP編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答