簡單的說,一個物件(在學習設計模式之前,需要比較了解物件導向思想)只負責一個特定的任務;
單例類別:
1、建構子需要標記為private(存取控制:防止外部程式碼使用new操作符建立物件),單例類別不能在其他類別中實例化,只能被其自身實例化;
2、擁有一個保存類別的實例的靜態成員變數
3、擁有一個存取這個實例的公共的靜態方法(常用getInstance()方法進行實例化單例類,透過instanceof操作符可以偵測到類別是否已被實例化)
另外,需要建立__clone()方法防止物件被複製(克隆)
<?php /** * Created by PhpStorm. * User: * Date: 2017/1/2 * Time: 下午3:32 */ class Single { //保存实例的私有静态实例变量 private static $instance; //private标记的构造方法,方式通过其他方式实例化 private function __construct() { echo "this is construct function"; } //创建clone方法防止被克隆 public function __clone() { trigger_error("Clone is not allowed ", E_USER_ERROR); } //单例方法,用户访问实例的公共静态方法 public static function shareInstance() { //instanceof:判断instance是不是self的实例或者子类 if (!(self::$instance instanceof self)){ self::$instance = new self(); } return self::$instance; } }
附
trigger_error()
函數建立使用者層級的錯誤訊息。
trigger_error()
函數能結合內建的錯誤處理器所關聯,或者可以使用使用者定義的函數作為新的錯誤處理程序(set_error_handler())。
trigger_error(errormsg,errortype);
參數 | 描述 |
---|---|
errormsg | 必需。規定錯誤訊息。最大長度 1024 位元組。 |
errortype | 可選。規定錯誤類型。可能的值:E_USER_ERRORE_USER_WARNINGE_USER_NOTICE(預設) |
簡單的說,一個物件(在學習設計模式之前,需要比較了解一個物件導向
1、建構子需要標記為private(存取控制:防止外部程式碼使用new運算元建立物件),單例類別不能在其他類別中實例化,只能被其自身實例化;2、擁有一個保存類別的實例的靜態成員變數3、擁有一個存取這個實例的公共的靜態方法(常用getInstance()方法進行實例化單例類,透過instanceof操作符可以偵測到類別是否已經被實例化)另外,需要建立__clone()方法防止物件被複製(複製)<?php /** * Created by PhpStorm. * User: * Date: 2017/1/2 * Time: 下午3:32 */ class Single { //保存实例的私有静态实例变量 private static $instance; //private标记的构造方法,方式通过其他方式实例化 private function __construct() { echo "this is construct function"; } //创建clone方法防止被克隆 public function __clone() { trigger_error("Clone is not allowed ", E_USER_ERROR); } //单例方法,用户访问实例的公共静态方法 public static function shareInstance() { //instanceof:判断instance是不是self的实例或者子类 if (!(self::$instance instanceof self)){ self::$instance = new self(); } return self::$instance; } }
附
trigger_error()
函數建立使用者層級的錯誤訊息。trigger_error()
trigger_error(errormsg,errortype);
必需。規定錯誤訊息。最大長度 1024 位元組。 | |
可選。規定錯誤類型。可能的值:E_USER_ERRORE_USER_WARNINGE_USER_NOTICE(預設) |