Maison > développement back-end > tutoriel php > Explication détaillée du modèle singleton php

Explication détaillée du modèle singleton php

怪我咯
Libérer: 2023-03-13 17:44:02
original
1736 Les gens l'ont consulté

Modèle Singleton(Mode singleton Pattern ou mode élément unique)

Le modèle Singleton garantit qu'il n'y a qu'une seule instance d'une classe, et il s'instancie et l'envoie à l'ensemble Le système fournit cette instance.

Le modèle singleton est un modèle de conception courant dans les systèmes informatiques, les pools de threads, les caches, les objets de journal, les boîtes de dialogue, les imprimantes, les opérations de base de données, les pilotes de carte graphique. sont souvent conçus comme des singletons.

Il existe trois types de modes singleton : singleton de style paresseux, singleton de style affamé et singleton de style enregistrement.

Alors pourquoi utiliser le modèle PHP singleton ?

L'un des principaux scénarios d'application de PHP est le scénario dans lequel l'application traite la base de données. Dans une application, il y aura un grand nombre d'opérations de base de données pour le comportement de la poignée de base de données de connexion. à la base de données , le mode singleton peut être utilisé pour éviter un grand nombre de nouvelles opérations. Parce que chaque nouvelle opération consomme des ressources système et mémoire.

Caractéristiques du mode singleton

La principale caractéristique du mode singleton est "Trois privés et un public":
Besoin d'une classe d'économie Le variable membre statique privée
constructeur
de la seule instance doit être déclaré comme privé pour empêcher les programmes externes de créer un objet et de perdre ainsi la signification du singleton
clonage La fonction doit être déclarée privée pour empêcher le clonage de l'objet
doit fournir une méthode statique publique (généralement nommée getInstance) qui accède à cette instance, renvoyant ainsi une référence à l'unique. exemple.

Raisons et scénarios d'utilisation du mode singleton

Dans la plupart des applications PHP, il y aura un grand nombre d'opérations de base de données. non utilisé, mode, alors une nouvelle opération est requise à chaque fois, mais chaque nouvelle consommera beaucoup de ressources système et de ressources mémoire, et chaque fois que la base de données est ouverte et fermée, c'est un excellent test et un gaspillage de la base de données. Par conséquent, le modèle singleton est souvent utilisé dans les classes d’opérations de bases de données.
De même, si une classe est nécessaire pour contrôler globalement certaines informations de configuration dans le système, elle peut être facilement implémentée en utilisant le mode singleton.

Implémentation du mode PHP singleton

Ce qui suit est un cadre pour le mode PHP singleton pour implémenter des classes d'opération de base de données

<?php
 class Db{
 const DB_HOST=&#39;localhost&#39;;
 const DB_NAME=&#39;&#39;;
 const DB_USER=&#39;&#39;;
 const DB_PWD=&#39;&#39;;
 private $_db;
 //保存实例的私有静态变量
 private static $_instance;
 //构造函数和克隆函数都声明为私有的
 private function construct(){
  //$this->_db=mysql_connect();
 }
 private function clone(){
  //实现
 }
 //访问实例的公共静态方法
 public static function getInstance(){
  if(!(self::$_instance instanceof self)){
  self::$_instance=new self();
  }
  //或者
  if(self::$_instance===null){
  self::$_instance=new Db();
  }
  return self::$_instance;
 }
 public function fetchAll(){
  //实现
 }
 public function fetchRow(){
  //实现
 }
 }
 //类外部获取实例的引用
 $db=Db::getInstance();
?>
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