Home >Backend Development >PHP Tutorial >PHP singleton mode (responsibility mode)
Simply put, an object (before learning design patterns, you need to understand object-oriented thinking) is only responsible for a specific task;
Single instance class:
1. Constructor It needs to be marked as private (access control: to prevent external code from using the new operator to create objects). The singleton class cannot be instantiated in other classes and can only be instantiated by itself;
2. Have a saved class Static member variables of the instance
3. Have a public static method to access this instance (the getInstance() method is commonly used to instantiate a singleton class, and the instanceof operator can be used to detect whether the class has been instantiated. )
In addition, you need to create a __clone() method to prevent the object from being copied (cloned)
<?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; } }
Attachment
trigger_error()
Function creates user-level error messages.
trigger_error()
The function can be associated with the built-in error handler, or a user-defined function can be used as a new error handler (set_error_handler()).
trigger_error(errormsg,errortype);
Parameters | Description |
---|---|
errormsg | Required. Specifies the error message. Maximum length 1024 bytes. |
errortype | Optional. Specifies the error type. Possible values: E_USER_ERRORE_USER_WARNINGE_USER_NOTICE (default) |
<?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; } }
Attached
trigger_error() Function creates a user-level error message.
trigger_error() The function can be associated with the built-in error handler, or a user-defined function can be used as a new error handler (set_error_handler()).
trigger_error(errormsg,errortype);
Description | |
---|---|
errormsg | Required. Specifies the error message. Maximum length 1024 bytes.|
errortype | Optional. Specifies the error type. Possible values: E_USER_ERRORE_USER_WARNINGE_USER_NOTICE (default)