Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Singleton-Musters in PHP

Detaillierte Erklärung des Singleton-Musters in PHP

墨辰丷
墨辰丷Original
2018-05-29 13:31:152055Durchsuche

In diesem Artikel werden das Konzept des Singleton-Modus, die Eigenschaften des Singleton-Modus, die Gründe und Szenarien für die Verwendung des Singleton-Modus sowie Codebeispiele für den PHP-Singleton-Modus erläutert dazu

Detaillierte Erklärung des PHP-Singleton-Modus

Das Konzept des Singleton-Modus

Singleton-Modus bedeutet, dass eine bestimmte Klasse In der gesamten Anwendung gibt es nur ein Entwurfsmuster für eine Objektinstanz. Konkret stellt das Singleton-Muster als Methode zur Objekterstellung sicher, dass eine Klasse nur eine Instanz hat, sich selbst instanziiert und diese Instanz global dem gesamten System zur Verfügung stellt. Es erstellt keine Kopie der Instanz, sondern gibt einen Verweis auf die intern in der Singleton-Klasse gespeicherte Instanz zurück.

Eigenschaften des Singleton-Modus

Das Hauptmerkmal des Singleton-Modus ist „Drei private und eine öffentliche“:

Benötigen Sie eine private statische Mitgliedsvariable, die die einzige Instanz der Klasse enthält

Der Konstruktormuss als privat deklariert werden, um zu verhindern, dass externe Programme ein Objekt neu erstellen und die Bedeutung von verlieren der Singleton

Die Klonfunktion muss als privat deklariert werden, um zu verhindern, dass das Objekt geklont wird

muss eine öffentliche statische Methode bereitstellen, um auf diese Instanz zuzugreifen (normalerweise getInstance genannt), wodurch ein Verweis auf eine eindeutige Instanz zurückgegeben wird.

Gründe und Szenarien für die Verwendung des Singleton-Modus

In den meisten PHP-Anwendungen wird es eine große Anzahl von Datenbankoperationen geben, wenn der Singleton-Modus nicht verwendet wird Jedes Mal ist ein neuer Vorgang erforderlich, aber jeder neue Vorgang verbraucht viele Systemressourcen und Speicherressourcen, und jedes Mal, wenn die Datenbank geöffnet und geschlossen wird, ist dies ein großer Test und eine Verschwendung der Datenbank. Daher wird das Singleton-Muster häufig in Datenbankoperationsklassen verwendet.

Wenn eine Klasse zur globalen Steuerung bestimmter Konfigurationsinformationen im System benötigt wird, kann sie ebenfalls einfach im Singleton-Modus implementiert werden.

PHP-Singleton-Modus-Implementierung

Das Folgende ist ein Framework für den PHP-Singleton-Modus zur Implementierung von Datenbankbetriebsklassen

<?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();
?>

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.


Verwandte Empfehlungen:

Eine vollständige Sammlung grundlegender PHP-Designmuster (Registrierungsbaummodus, Factory-Modus, Einzelspaltenmodus), Designmodus Single Column_PHP Tutorial

Umfassende Sammlung grundlegender PHP-Designmodi (Registrierungsbaummodus, Factory-Modus, Einzelspaltenmodus), Designmodus, einspaltig

PHP-objektorientiert-Einspaltenmodus

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Singleton-Musters in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn