Maison  >  Article  >  développement back-end  >  Comment implémenter le mode singleton php

Comment implémenter le mode singleton php

(*-*)浩
(*-*)浩original
2019-10-09 13:27:063044parcourir

Le modèle singleton est un modèle de conception de logiciels couramment utilisé. Contient une seule classe spéciale appelée singleton dans sa structure de base. Le modèle singleton garantit qu’il n’y a qu’une seule instance d’une classe dans le système. Autrement dit, une classe n’a qu’une seule instance d’objet.

Comment implémenter le mode singleton php

Astuce : La conception du pool de connexions à la base de données adopte généralement le mode singleton, car la connexion à la base de données est une ressource de base de données. L'utilisation de pools de connexions à la base de données dans les systèmes logiciels de base de données vise principalement à éviter la perte d'efficacité causée par l'ouverture ou la fermeture des connexions à la base de données. Cette perte d'efficacité reste très coûteuse, donc l'utilisation du mode singleton pour la maintenance peut réduire considérablement cette perte. (Apprentissage recommandé : Tutoriel vidéo PHP)

Il y a quatre points clés dans l'implémentation du mode singleton en PHP :

Une instance unique d'un fichier enregistré la classe est requise Variables membres statiques ;

Les constructeurs et les fonctions de clonage doivent être déclarés privés pour empêcher les programmes externes de perdre la signification du mode singleton en utilisant de nouvelles classes

doivent fournir une méthode statique publique ; pour accéder à cette instance ;

Utilisez le mot-clé final lors de la définition d'une classe pour désactiver l'héritage et empêcher le remplacement des méthodes de la classe parent.

Code de référence :

final class Singleton {

    //静态变量要设置为私有,防止被修改
    private static  $instance;

    //构造函数声明为私有,防止外部程序new类
    private function __construct() {

    }

    //克隆函数声明为私有,防止克隆对象
    private function __clone() {

    }

    //提供一个创建唯一实例的接口
    public static function getInstance() {

        if(!(self::$instance instanceof self)) {
            self::$instance = new self();
        }
        return self::$instance;
    }
}

//只能根据getInstance静态方法创建Singleton实例
$ins = Singleton::getInstance()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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