Maison >développement back-end >tutoriel php >Modèle de conception PHP Principe du modèle Singleton et analyse de la méthode de mise en œuvre Compétences PHP

Modèle de conception PHP Principe du modèle Singleton et analyse de la méthode de mise en œuvre Compétences PHP

jacklove
jackloveoriginal
2018-06-26 17:19:092342parcourir

Cet article présente principalement les principes et les méthodes d'implémentation du modèle singleton dans les modèles de conception PHP. Il présente brièvement le concept, la fonction et la composition du modèle singleton, et analyse les techniques d'exploitation associées à la définition et à l'utilisation du modèle singleton dans PHP sous forme d'exemples. , Les amis dans le besoin peuvent se référer à

Les exemples de cet article décrivent les principes et les méthodes d'implémentation du modèle singleton dans les modèles de conception PHP. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

1. Qu'est-ce que le modèle singleton

En tant que modèle de création d'objet, le modèle singleton assure ? qu'il n'y a qu'une seule classe d'une certaine instance de classe et fournir un accès externe à cette instance globale. Il ne crée pas de copie de l'instance, mais renvoie une référence à l'instance stockée dans la classe singleton.

2. Trois éléments du mode PHP singleton

1. Une variable membre statique est requise pour enregistrer la seule instance de la classe.

2. 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 copier des copies d'instance.

3. Une méthode statique publique doit être fournie pour accéder à cette instance, renvoyant ainsi une référence à l'instance unique.

3. Pourquoi utiliser le mode singleton

Les avantages de l'utilisation du mode singleton sont grands, prenons le fonctionnement de la base de données comme exemple. Si le mode singleton n'est pas adopté, lorsqu'un grand nombre d'opérations de base de données se produisent dans le programme, de nouvelles opérations doivent être effectuées à chaque fois, ce qui consomme une grande quantité de ressources mémoire et de ressources système, et chaque fois qu'une connexion à la base de données est ouverte et fermée. , c'est une violation de la base de données. Un excellent test et un gaspillage. En utilisant le mode singleton, il ne doit être instancié qu'une seule fois et il n'est pas nécessaire d'effectuer de nouvelles opérations à chaque fois, ce qui réduit considérablement la consommation de ressources.

4. Exemple de mode Singleton

Nous prenons ici le fonctionnement de la base de données comme exemple

<?php
/**
*  单例模式
**/
class Db
{
  //保存全局实例
  private static $instance;
  //数据库连接句柄
  private $db;
  //数据库连接参数
  const HOSTNAME = "127.0.0.1";
  const USERNAME = "root";
  const PASSWORD = "root";
  const DBNAME = "testdb";
  //私有化构造函数,防止外界实例化对象
  private function __construct()
  {
    $this->db = mysqli_connect(self::HOSTNAME,self::USERNAME,
      self::PASSWORD,self::DBNAME);
  }
  //私有化克隆函数,防止外界克隆对象
  private function __clone()
  {
  }
  //单例访问统一入口
  public static function getInstance()
  {
    if(!(self::$instance instanceof self))
    {
      self::$instance = new self();
    }
    return self::$instance;
  }
  //数据库查询操作
  public function getinfo()
  {
    $sql = "select * from testtb";
    $res = mysqli_query($this->db,$sql);
    while($row = mysqli_fetch_array($res)) {
      echo $row[&#39;testcol&#39;] . &#39;<br />&#39;;
    }
    mysqli_free_result($res);
  }
}
$mysqli = Db::getInstance();
$mysqli->getinfo();
?>

Articles qui pourraient vous intéresser :

Prototypage de modèles de conception PHP Principe et analyse de l'utilisation des modèles de conception Compétences PHP

Comment implémenter le code de vérification SMS dans l'exemple php de Laravel

PHP recevoirMail implémente la fonction de réception d'e-mails par exemple php

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