PHP-Designmuster-Singleton-Muster
Einführung
Das Singleton-Muster bezieht sich auf ein Entwurfsmuster, bei dem eine Klasse in der gesamten Anwendung nur eine Objektinstanz hat. Es wird normalerweise verwendet, um Objekte zu erstellen, sicherzustellen, dass es nur eine Instanz einer Klasse gibt, sich selbst zu instanziieren und diese Instanz dem gesamten System bereitzustellen.
Es handelt sich um ein gängiges Entwurfsmuster. In Computersystemen werden Thread-Pools, Caches, Protokollobjekte, Dialogfelder, Drucker, Datenbankoperationen und Grafikkartentreiber häufig als Singletons entworfen.
Funktionen
Eine Klasse hat eine und nur eine Instanz in der gesamten Anwendung
Die Klasse muss diese Instanz selbst erstellen
Sie muss diese Instanz bereitstellen auf das gesamte System selbst
Funktion
Der größte Effekt der Verwendung des Singleton-Modus besteht darin, den Systemaufwand zu reduzieren und Ressourcen zu sparen. Wenn wir beispielsweise PHP für die tägliche Entwicklung verwenden, müssen wir häufig mehrmals eine Verbindung zu verschiedenen relationalen und nicht relationalen Datenbanken wie MySQL oder Redis herstellen. Wenn wir nicht den Singleton-Modus verwenden, müssen wir zum Erstellen mehrere Male eine neue Verbindung herstellen neue Instanzen, die viele Speicherressourcen und Systemressourcen verbrauchen.
Wichtige Punkte
1. Eine statische Mitgliedsvariable, die die einzige Instanz der Klasse enthält, ist erforderlich
private static $_instance;
2. Konstruktoren und Klonfunktionen müssen als privat deklariert werden externe Programme verhindern Die neue Klasse verliert somit die Bedeutung des Singleton-Modus
// 私有化构造方法,防止new实例 private function __construct() { $this->_db = pg_connect('demo'); } // 覆盖__clone()方法,禁止克隆 private function __clone() { }
3. Für den Zugriff auf diese Instanz muss eine öffentliche statische Methode (normalerweise die getInstance-Methode) bereitgestellt werden, wodurch eine Referenz auf die einzige zurückgegeben wird Instanz
// 用于返回对象实例的公共静态方法 public static function getInstance() { // 判断当前实例是否已经创建 if (!(self::$_instance instanceof self) ) { // 如果没有,则创建 self::$_instance = new self(); } // 最终返回实例 return self::$_instance; }
Erklärung
Jetzt nehme ich eine MySQL-Operationsklasse als Beispiel, um zu zeigen, wie man sie schreibt.
Code:
<?php /** * Class DB 数据库操作类 */ class Db { private $_db; private static $_instance; // 私有化构造方法,防止外部new实例 private function __construct(...) { // 这里主要用于连接数据库,细节此处省略 $this->_db = pg_connect(...); } // 覆盖__clone()方法,禁止克隆 private function __clone() { } // 返回对象实例 public static function getInstance() { // 判断是否存在对象实例 if(! (self::$_instance instanceof self) ) { // 不存在则创建保存 self::$_instance = new self(); } // 返回对象实例 return self::$_instance; } // 其他方法 public function addUserInfo(...) { } // 其他方法 public function getUserInfo(...) { } } // 演示 $db = Db::getInstance(); $db->addUserInfo(...); $db->getUserInfo(...);
Zusammenfassung
Nachdem ich so viel über das Singleton-Muster gesprochen habe, bedeutet das nicht, dass es keine Mängel aufweist. Im Folgenden liste ich die Verwendung von Singletons auf Schauen wir uns die Vor- und Nachteile des Modells an und Sie können es entsprechend Ihren tatsächlichen Anforderungen verwenden.
Vor- und Nachteile des Singleton-Musters:
Vorteile:
Verbesserung des Designs des Systems
Es ist eine Verbesserung gegenüber globalen Variablen
Systemressourcen-Overhead sparen
Nachteile:
Schwer zu debuggen
Versteckte Abhängigkeiten
Ein Singleton kann nicht mit falschem Datentyp überschrieben werden

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.
