《php單例模式》要點:
本文介紹了php單例模式,希望對您有用。如果有疑問,可以聯系我們。
單例簡單來說就是一個對象只負責一個特定的任務,只能被實例化一次.
首先分析一下:
1,為了控制實例化,可以使用__construct()這個魔術方法,這樣每次實例化就會自動執行這個方法.
2,為了控制實例化,看看加上私有或者受保護效果
3,那如何訪問調用呢?這就要注意static的用法了
以上就是實現單例的原理,可見兩次實例化都是一個類.
1、構造函數需要防止外部代碼使用new操作符創建對象,單例類只能被其自身實例化;
2、擁有一個保存類的實例的靜態成員變量
3、擁有一個訪問這個實例的公共的靜態方法(例子中的getDanli()方法),通過instanceof操作符可以檢測到類是否已經被實例化)
4、另外,需要創建__clone()方法防止對象被復制(克隆)
1、大量的數據庫操作, 使用單例模式可以避免new 操作消耗資源.
2、如果系統中需要有一個類來全局控制某些配置信息, 那么使用單例模式可以很方便.
3、一些特殊的應用場景,比如購物車,還可以方便代碼的調試.
<?php
class Danli {
private static $_instance;
private function __construct(){
echo '這是單例方法';
}
public function __clone(){
trigger_error('不能克隆);
}
public static function getInstance(){
if(!(self::$_instance instanceof self)){
self::$_instance = new self;
}
return self::$_instance;
}
public function test(){
echo '調用單例中的test()方法成功';
}
}
$danli = Danli::getInstance();
$danli->test();//調用單例中的test()方法成功
$danli_clone = clone $danli;//E_USER_ERROR
維易PHP培訓學院每天教你實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/6510.html