Maison >développement back-end >tutoriel php >Explication détaillée des cas d'utilisation du modèle PHP singleton

Explication détaillée des cas d'utilisation du modèle PHP singleton

php中世界最好的语言
php中世界最好的语言original
2018-05-16 14:11:521734parcourir

Cette fois, je vais vous apporter une explication détaillée des cas d'utilisation du mode PHP singleton. Quelles sont les précautions lors de l'utilisation du mode PHP singleton. Ce qui suit est un cas pratique, jetons un coup d'œil.

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, prenez 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

Ici, nous prenons 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();
?>

Je crois que vous maîtrisez la méthode après avoir lu le C'est le cas dans cet article. Pour un contenu plus passionnant, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Une étude de cas d'une affiche de génération de code QR PHP

Explication détaillée des étapes de modification de PHPExcel

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