Maison développement back-end tutoriel php [Design Pattern] Scénarios d'application et implémentation du modèle PHP singleton

[Design Pattern] Scénarios d'application et implémentation du modèle PHP singleton

Jun 02, 2020 am 12:58 AM
单例模式

Résumé

Qu'est-ce que le modèle singleton ?

Une classe n'est autorisée à créer qu'un seul objet (ou instance), alors cette classe est une classe singleton. Ce modèle de conception est appelé le modèle de conception singleton, ou modèle singleton en abrégé.

Pourquoi utiliser singleton ?

  1. Gérer les conflits d'accès aux ressources.

    Par exemple : la fonction d'impression des journaux dans un fichier.

  2. représente une classe unique au monde.

D'un point de vue commercial, si certaines données ne doivent être enregistrées qu'en une seule copie dans le système, il est plus approprié de les concevoir comme une classe singleton. Par exemple : générateur de numéro d'identification croissant unique.

Méthode d'implémentation

Il faut trois étapes pour implémenter le mode singleton de PHP

* Une variable membre statique utilisée pour sauvegarder la classe.

* Pour empêcher la création ou le clonage d'objets, __construct et __clone doivent être déclarés privés.

* Une méthode statique publique pour accéder à cette instance, généralement getInstance

class single
{
    private static  $instance ;
    private function __construct(){}
    private function __clone(){}
    public static function getInstance() {
        if (empty(self::$instance)) {
            self::$instance = new single();
        }
        return self::$instance;
    }
}
Copier après la connexion

Ajoutez une méthode à la classe singleton pour obtenir l'ID. Un générateur de numéro d'identification unique au monde apparaît.

class single
{
    private  $id = 0;
    private static  $instance ;
    private function __construct(){}
    private function __clone(){}
    public static function getInstance() {
        if (empty(self::$instance)) {
            self::$instance = new single();
        }
        return self::$instance;
    }
    public function getId() {
        
        return $this->id++;
        
    }
}
Copier après la connexion

C'est vraiment impeccable, alors que se passe-t-il dans le cas du multi-threading ?

Implémentation de la seule instance unique d'un thread

Je dois mentionner la différence entre les versions ts et nts de php, nts (Non Thread Safe) construction à thread unique, données de cache partagées entre les threads. ts (Thread Safe) est construit avec des capacités multithread et utilise différentes copies de données entre plusieurs threads.

L'utilisation de la version ts de php sera automatiquement mise à niveau vers le mode thread-safe. L'extension pthreads ne peut être installée que sur la version ts de php.

La dernière version de pthreads incluse dans pecl est basée sur php7.0. Le projet pthreads sur github a également arrêté la mise à jour. Si vous êtes intéressé, vous ne pouvez passer qu'à la version 7.0 pour manquer l'historique.

J'ai installé l'extension pthreads sous la version php-7.0.9-Win32-VC14-x64.

Dans le cas du multi-threading, la portée du singleton passe de processus uniquement à thread uniquement.

require 'single.php';
class Request extends Thread {
    public $url;
    public function __construct($url) {
        $this->url = $url;
    }
    public function run() {
        echo single::getInstance()->getId();
        echo "\n";
    }
}
$chG = new Request("www.google");
$chG ->start();
$chG->join();
echo $chG->getThreadId();
echo "\n";
$chB = new Request("www.baidu");
$chB ->start();
$chB->join();
echo $chB->getThreadId();
echo "\n";
Copier après la connexion

Deux threads sont créés ici, mais l'ID commençant à 0 peut être obtenu dans les deux exécutions, indiquant que les classes uniques dans les deux threads sont deux objets singleton différents.

Résumé

Il faut trois étapes pour implémenter le mode singleton de PHP

*A Les variables membres statiques sont utilisées pour enregistrer les classes.

* __construct et __clone sont déclarés privés pour empêcher la création ou le clonage.

* Une méthode statique, généralement getInstance, utilisée pour accéder à cette instance.

Je n'ai jamais utilisé le multi-threading en PHP. Cela semble être un point de non-retour. Je ne sais pas ce que tout le monde pense.

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Un article pour comprendre le modèle singleton en JavaScript Un article pour comprendre le modèle singleton en JavaScript Apr 25, 2023 pm 07:53 PM

Le modèle JS singleton est un modèle de conception couramment utilisé qui garantit qu'une classe n'a qu'une seule instance. Ce mode est principalement utilisé pour gérer les variables globales afin d'éviter les conflits de noms et les chargements répétés. Il peut également réduire l'utilisation de la mémoire et améliorer la maintenabilité et l'évolutivité du code.

L'application du mode singleton et du mode usine dans la surcharge et la réécriture de fonctions C++ L'application du mode singleton et du mode usine dans la surcharge et la réécriture de fonctions C++ Apr 19, 2024 pm 05:06 PM

Modèle Singleton : fournissez des instances singleton avec différents paramètres via une surcharge de fonctions. Modèle d'usine : créez différents types d'objets grâce à la réécriture de fonctions pour dissocier le processus de création des classes de produits spécifiques.

En PHP, quel est le concept de design pattern singleton ? En PHP, quel est le concept de design pattern singleton ? Aug 18, 2023 pm 02:25 PM

Le modèle Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global. Il garantit qu'un seul objet est disponible et sous contrôle dans l'application. Le modèle Singleton fournit un moyen d'accéder directement à son objet unique sans instancier l'objet de la classe. Exemple<?php classdatabase{ publicstatic$connection;

Modèles de conception PHP : le chemin vers l'excellence du code Modèles de conception PHP : le chemin vers l'excellence du code Feb 21, 2024 pm 05:30 PM

Introduction Les modèles de conception PHP sont un ensemble de solutions éprouvées aux défis courants du développement de logiciels. En suivant ces modèles, les développeurs peuvent créer un code élégant, robuste et maintenable. Ils aident les développeurs à suivre les principes SOLID (responsabilité unique, ouvert-fermé, remplacement de Liskov, isolation d'interface et inversion de dépendance), améliorant ainsi la lisibilité, la maintenabilité et l'évolutivité du code. Types de modèles de conception Il existe de nombreux modèles de conception différents, chacun ayant son propre objectif et ses avantages. Voici quelques-uns des modèles de conception PHP les plus couramment utilisés : Modèle Singleton : garantit qu'une classe n'a qu'une seule instance et fournit un moyen d'accéder à cette instance de manière globale. Modèle d'usine : crée un objet sans spécifier sa classe exacte. Il permet aux développeurs de conditionnellement

Premiers pas avec PHP : modèle Singleton Premiers pas avec PHP : modèle Singleton May 20, 2023 am 08:13 AM

Dans le développement de logiciels, nous rencontrons souvent des situations où plusieurs objets doivent accéder à la même ressource. Afin d'éviter les conflits de ressources et d'améliorer l'efficacité du programme, nous pouvons utiliser des modèles de conception. Parmi eux, le modèle singleton est un moyen couramment utilisé pour créer des objets, qui garantit qu'une classe n'a qu'une seule instance et fournit un accès global. Cet article explique comment utiliser PHP pour implémenter le modèle singleton et fournit quelques suggestions de bonnes pratiques. 1. Qu'est-ce que le mode singleton ?Le mode singleton est un moyen couramment utilisé pour créer des objets. Sa caractéristique est de garantir qu'une classe n'a qu'une seule instance et fournit.

Analyse des scénarios d'application courants du modèle singleton en PHP Analyse des scénarios d'application courants du modèle singleton en PHP Oct 15, 2023 pm 01:25 PM

Présentation de l'analyse des scénarios d'application courants du modèle singleton en PHP : Le modèle singleton (SingletonPattern) est un modèle de conception créationnel qui garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global pour accéder à l'instance. En PHP, l'utilisation du mode singleton peut limiter efficacement le nombre d'instanciations et l'utilisation des ressources d'une classe, et améliorer les performances et la maintenabilité du code. Cet article analysera des scénarios d'application courants et donnera des exemples de code PHP spécifiques pour illustrer l'utilisation et les avantages du modèle singleton. Canal de connexion à la base de données

Scénarios d'application et processus de sécurité des threads du mode singleton dans les systèmes distribués PHP Scénarios d'application et processus de sécurité des threads du mode singleton dans les systèmes distribués PHP Oct 15, 2023 pm 04:48 PM

Scénarios d'application et processus de sécurité des threads du mode singleton dans les systèmes distribués PHP Introduction : Avec le développement rapide d'Internet, les systèmes distribués sont devenus un sujet brûlant dans le développement de logiciels modernes. Dans les systèmes distribués, la sécurité des threads a toujours été un problème important. Dans le développement PHP, le modèle singleton est un modèle de conception couramment utilisé, qui peut résoudre efficacement les problèmes de partage de ressources et de sécurité des threads. Cet article se concentrera sur les scénarios d'application et les processus de sécurité des threads du modèle singleton dans les systèmes distribués PHP, et fournira des exemples de code spécifiques. 1. Mode singleton

Modèle Singleton dans les modèles de conception et application en PHP Modèle Singleton dans les modèles de conception et application en PHP Oct 15, 2023 am 08:02 AM

Introduction au modèle singleton dans les modèles de conception et son application en PHP : Les modèles de conception sont des modèles classiques permettant de résoudre des problèmes spécifiques résumés par des ingénieurs logiciels expérimentés au cours du processus de conception de logiciels. Parmi eux, le modèle singleton est l’un des modèles de conception les plus couramment utilisés. Le modèle singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global pour accéder à cette instance. En PHP, le modèle singleton est largement utilisé dans divers scénarios. Cet article présentera en détail le concept, les caractéristiques et les applications spécifiques du modèle singleton en PHP, et donnera également des exemples de code pertinents.

See all articles