Maison > développement back-end > Problème PHP > Comment implémenter un modèle singleton en php

Comment implémenter un modèle singleton en php

王林
Libérer: 2023-03-03 07:12:02
original
3699 Les gens l'ont consulté

Comment implémenter le mode singleton en PHP : Pour implémenter le mode singleton, vous devez vous assurer qu'une classe n'a qu'une seule instance et fournir un point d'accès global pour y accéder. Le modèle singleton ne crée pas de copie de l'instance, mais renvoie une référence à l'instance stockée dans la classe singleton.

Comment implémenter un modèle singleton en php

Définition du modèle singleton :

(tutoriel recommandé : tutoriel php)

Assurez-vous qu'il n'y a qu'une seule instance d'une classe et fournissez-lui un point d'accès global. Il ne crée pas de copie de l'instance, mais renvoie une référence à l'instance stockée en interne dans la classe singleton.

Trois éléments du modèle singleton :

  • Nécessite une variable membre statique qui contient une instance unique de la classe.

  • Les constructeurs et les fonctions de clonage doivent être déclarés privés pour empêcher les programmes externes de créer ou de faire des copies de l'instance.

  • doit fournir une méthode statique publique pour accéder à cette instance, renvoyant ainsi une référence à l'instance unique.

Implémentation du code :

class Singleton
{
    //创建静态私有的变量保存该类对象
    static private $instance;

    //防止使用new直接创建对象
    private function __construct(){}

    //防止使用clone克隆对象
    private function __clone(){}

    static public function getInstance()
    {
        //判断$instance是否是Singleton的对象,不是则创建
        if (!self::$instance instanceof self) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    public function test()
    {
        echo "我是一个单例模式";
    }
}

$sing = Singleton::getInstance();
$sing->test();
$sing2 = new Singleton(); //Fatal error: Uncaught Error: Call to private Singleton::__construct() from invalid context in
$sing3 = clone $sing; //Fatal error: Uncaught Error: Call to private Singleton::__clone() from context
Copier après la connexion

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!

É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