Maison >développement back-end >Problème PHP >Que signifie singleton en php

Que signifie singleton en php

WBOY
WBOYoriginal
2022-05-06 10:57:492092parcourir

En PHP, un singleton signifie qu'une classe a et n'a qu'une seule instance. Il fait référence à un modèle de conception dans lequel une certaine classe dans l'ensemble de l'application n'a qu'une seule instance d'objet dans le modèle singleton qui la fournira ; l'ensemble du système, une copie de l'instance ne sera pas créée, mais une référence sera renvoyée à l'instance stockée dans la classe singleton.

Que signifie singleton en php

L'environnement d'exploitation de cet article : système Windows 10, PHP version 7.1, ordinateur Dell G3

Quelle est la signification de singleton en php

Le mode singleton fait référence à la conception qu'une certaine classe dans l'ensemble l'application n'a qu'un seul modèle d'instance d'objet. Plus précisément, en tant que méthode de création d'objets, le modèle singleton garantit qu'une classe n'a qu'une seule instance, s'instancie et fournit cette instance globalement à l'ensemble du système. 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.

Une classe a une et une seule instance, et elle est fournie à l'ensemble du programme après s'être instanciée, ou elle peut être comprise comme garantissant que cette classe a une et une seule instance pendant toute l'exécution du programme, et fournit un global qui peut y accéder.

Caractéristiques du modèle singleton

La principale caractéristique du modèle singleton est "trois privés et un public":

Nécessite une variable membre statique privée qui contient la seule instance de la classe

Le constructeur doit être déclaré private pour empêcher Un programme externe crée un nouvel objet et perd ainsi le sens d'un singleton. La fonction clone doit être déclarée privée pour empêcher le clonage de l'objet. Une méthode statique publique (généralement nommée getInstance) doit être fournie pour accéder à cette instance. , renvoyant ainsi une instance unique.

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 si le mode singleton n'est pas utilisé, de nouvelles opérations seront nécessaires à chaque fois, mais chaque nouvelle consommera une. 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();
?>
Apprentissage recommandé : "

Tutoriel vidéo 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