Maison > développement back-end > tutoriel php > Mode PHP singleton (mode responsabilité)

Mode PHP singleton (mode responsabilité)

高洛峰
Libérer: 2023-03-05 15:56:02
original
1416 Les gens l'ont consulté

En termes simples, un objet (avant d'apprendre les modèles de conception, vous devez comprendre la pensée orientée objet) n'est responsable que d'une tâche spécifique

Classe à instance unique :

1. Elle doit être marquée comme privée (contrôle d'accès : pour empêcher le code externe d'utiliser l'opérateur new pour créer des objets). La classe singleton ne peut pas être instanciée dans d'autres classes et ne peut être instanciée que par elle-même ; Avoir une classe enregistrée Variables membres statiques de l'instance

3. Avoir une méthode statique publique pour accéder à cette instance (la méthode getInstance() est couramment utilisée pour instancier une classe singleton, et l'opérateur instanceof peut être utilisé pour détecter si la classe a été instanciée) )

De plus, la méthode __clone() doit être créée pour empêcher l'objet d'être copié (cloné)

<?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;
    }
}
Copier après la connexion
Copier après la connexion
Pièce jointe

Création de fonction Message d'erreur au niveau de l'utilisateur. La fonction

trigger_error()

peut être associée au gestionnaire d'erreurs intégré, ou une fonction définie par l'utilisateur peut être utilisée comme nouveau gestionnaire d'erreurs (set_error_handler()).

trigger_error()

trigger_error(errormsg,errortype);
Copier après la connexion
Copier après la connexion
参数 描述
errormsg 必需。规定错误消息。最大长度 1024 字节。
errortype 可选。规定错误类型。可能的值:E_USER_ERRORE_USER_WARNINGE_USER_NOTICE(默认)


En termes simples, un objet (vous devez comprendre la pensée orientée objet avant d'apprendre les modèles de conception) n'est responsable que d'une tâche spécifique

Classe Singleton :

1. Le constructeur doit être marqué comme privé (contrôle d'accès : empêcher le code externe d'utiliser l'opérateur new pour créer des objets). La classe singleton ne peut pas être instanciée dans d'autres classes, uniquement). Instancié par lui-même ;

2. Avoir une variable membre statique qui contient une instance de la classe

3. Avoir une méthode statique publique pour accéder à cette instance (la méthode getInstance() est couramment utilisée. par exemple la classe Singleton, vous pouvez détecter si la classe a été instanciée via l'opérateur instanceof)

De plus, vous devez créer une méthode __clone() pour empêcher l'objet d'être copié (cloné)

La fonction

Attachée
<?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;
    }
}
Copier après la connexion
Copier après la connexion

crée des messages d'erreur au niveau de l'utilisateur. La fonction

trigger_error() peut être associée au gestionnaire d'erreurs intégré, ou une fonction définie par l'utilisateur peut être utilisée comme nouveau gestionnaire d'erreurs (set_error_handler()).

trigger_error()

trigger_error(errormsg,errortype);
Copier après la connexion
Copier après la connexion
参数 描述
errormsg 必需。规定错误消息。最大长度 1024 字节。
errortype 可选。规定错误类型。可能的值:E_USER_ERRORE_USER_WARNINGE_USER_NOTICE(默认)
Pour plus d'articles liés au mode singleton de PHP (mode responsabilité), veuillez faire attention au site Web chinois de PHP !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal