Table des matières
Structure de base singleton
Utilisation du singleton
Sécurité du fil (facultatif)
Considérations et alternatives
Maison développement back-end tutoriel php Comment implémenter un modèle singleton en PHP?

Comment implémenter un modèle singleton en PHP?

Sep 25, 2025 am 12:27 AM
php Mode singleton

Le modèle Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global pour les scénarios où un seul objet coordonne le fonctionnement du système, tels que les connexions de base de données ou la gestion de la configuration. 2. Sa structure de base comprend: les instances de stockage d'attributs statiques privées, les constructeurs privés empêchent la création externe, les méthodes de clonage privés empêchent la réplication et les méthodes statiques publiques (telles que getInstance ()) pour obtenir des instances. 3. Obtenez une instance unique dans PHP en appelant la méthode GetInstance () et renvoie la même référence d'objet, peu importe le nombre de fois où il est appelé. 4. La sécurité des threads n'est pas nécessaire pour être considérée dans le modèle de demande PHP standard, mais les problèmes de synchronisation doivent être prêts à prêter attention dans des environnements à long terme ou multi-thread, et PHP lui-même ne prend pas en charge le mécanisme de verrouillage natif. 5. Bien que les singletons soient utiles, ils introduisent l'état mondial et affectent les tests, et il est recommandé de prioriser des approches plus flexibles telles que l'injection de dépendance et d'adopter des singletons uniquement si nécessaire. 6. La fonctionnalité principale est qu'il s'agit d'une instance unique, accessible à l'échelle mondiale et anti-réplication.

Comment implémenter un modèle singleton en PHP?

Le modèle Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global. Ceci est utile lorsque exactement un objet est nécessaire pour coordonner les actions sur un système, telles que les connexions de base de données ou les gestionnaires de configuration.

Structure de base singleton

Une classe PHP Singleton empêche l'instance externe et applique une seule instance partagée via une méthode statique.

Les éléments clés comprennent:

  • Une propriété statique privée pour tenir l'instance
  • Un constructeur privé pour empêcher la création directe
  • Une méthode de clone privé pour éviter la duplication
  • Une méthode statique publique (généralement getInstance () ) pour accéder à l'instance

classe DatabaseConnection {
    instance privée statique $ = null;
<pre class='brush:php;toolbar:false;'>fonction privée __construct () {
    // Initialiser la connexion ici
}

fonction privée __clone () {}

fonction statique publique getInstance () {
    if (self :: $ instance === null) {
        self :: $ instance = new self ();
    }
    return self :: $ instance;
}

Query de fonction publique ($ sql) {
    return "Exécution: $ sql";
}

}

Utilisation du singleton

Pour utiliser le singleton, appelez la méthode statique getInstance () . Peu importe le nombre de fois que cela s'appelle, il renvoie la même référence d'objet.

$ db1 = databaseConnection :: getInstance ();
$ db2 = databaseConnection :: getInstance ();
<p>var_dump ($ db1 === $ db2); // Sorties: bool (true)
echo $ db1-> requête ("sélectionner * dans les utilisateurs");</p>

Sécurité du fil (facultatif)

Dans le PHP standard (modèle basé sur la demande), la sécurité des threads n'est généralement pas une préoccupation car chaque demande s'exécute de manière isolée. Cependant, dans des environnements de longue durée ou multithreads (comme ReactPHP ou avec des PTHEADS), vous pourriez avoir besoin de synchronisation. PHP ne prend pas en charge les verrous de filetage natifs, donc ce modèle repose sur une conception appropriée pour de tels cas.

Considérations et alternatives

Bien que les singletons puissent être utiles, ils introduisent l'état mondial et peuvent rendre les tests plus difficiles. Considérez l'injection de dépendance comme une alternative plus flexible.

Si vous utilisez un singleton, gardez la logique minimum et assurez-vous qu'elle est vraiment nécessaire pour votre cas d'utilisation.

Fondamentalement, une seule instance, accessible à l'échelle mondiale et protégée de la duplication.

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

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)

Comment vérifier si une adresse e-mail est valide en PHP? Comment vérifier si une adresse e-mail est valide en PHP? Sep 21, 2025 am 04:07 AM

Usefilter_var () tovalidateemailsyntaxandcheckdnsrr () toverifydomainmxrecords.example: $ email = "user@example.com"; if (f ilter_var ($ e-mail, filter_validate_email) && checkdnsrr (explosage ('@', $ e-mail) [1], 'mx')) {echo "ValidAndDeliverableMail & Qu

Comment mettre à jour un enregistrement dans une base de données avec PHP? Comment mettre à jour un enregistrement dans une base de données avec PHP? Sep 21, 2025 am 04:47 AM

ToupDateAdatabasereCorDinPhp, FirstConnectUsingPDoOrmysQLi, theNusepreparedStationStoExECUSEASECURSQLUPDATEQUERY.example: $ pdo = newPDO ("MySql: host = localhost; dbname = votre_database", $ username, $ mot de passe); $ sql = "dameussem =.

Comment appeler un constructeur parent dans PHP? Comment appeler un constructeur parent dans PHP? Sep 21, 2025 am 03:43 AM

Lors de l'extension de la réchauffe, Callparent :: __ Construct () ToensureTheTheparent'sInitializationLogicruns.1.IftheparentClassConstructororsEtsUntialProperties, sautant le tascalmayResultinInincleteeObjectInitialization.20

Comment vérifier les autorisations de fichiers dans PHP? Comment vérifier les autorisations de fichiers dans PHP? Sep 22, 2025 am 06:27 AM

UseFilePerms () togetFilePermissionsAsanIntegerAndFormatisingSprintf ('% o') todisplayunix-stylepermisessions lisilit0644

Comment obtenir des arguments en ligne de commande dans un script PHP? Comment obtenir des arguments en ligne de commande dans un script PHP? Sep 22, 2025 am 06:19 AM

Utilisez $ argv et $ argc pour obtenir des paramètres de ligne de commande PHP. $ argc est le nombre de paramètres et $ argv est le tableau des paramètres. Par exemple, dans phpsscript.phphelloworld, $ argv = [script.php ', «bonjour», «monde»]; Utilisez $ argv [1] et autres pour accéder aux paramètres spécifiques; Utilisez getOPT () pour gérer les options courtes (-f) et les longues options (--fichier) dans des scénarios complexes.

Comment obtenir des paramètres URL en PHP? Comment obtenir des paramètres URL en PHP? Sep 24, 2025 am 05:11 AM

Utilisez $ _get pour obtenir des paramètres URL, tels que? Name = John & Age = 25; Vérifiez l'existence via les opérateurs de fusion ISSET ou vide, et filtrez et vérifiez les données avec filter_input pour assurer la sécurité.

Comment implémenter un modèle singleton en PHP? Comment implémenter un modèle singleton en PHP? Sep 25, 2025 am 12:27 AM

Le modèle Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global pour les scénarios où un seul objet coordonne le fonctionnement du système, tels que les connexions de base de données ou la gestion de la configuration. 2. Sa structure de base comprend: les instances de stockage d'attribut statiques privées, les constructeurs privés empêchent la création externe, les méthodes de clonage privé empêchent la copie et les méthodes statiques publiques (telles que getInstance ()) pour obtenir des instances. 3. Obtenez une instance unique dans PHP en appelant la méthode GetInstance () et renvoie la même référence d'objet, peu importe le nombre de fois où il est appelé. 4. Selon le modèle de demande PHP standard, la sécurité des threads n'est pas nécessaire pour être prise en compte, mais les problèmes de synchronisation doivent être prêts à prêter attention dans des environnements à long terme ou multi-thread, et PHP lui-même ne prend pas en charge le mécanisme de verrouillage natif. 5. Bien que les singletons soient utiles,

Comment utiliser l'opérateur de fusion nul (??) en PHP? Comment utiliser l'opérateur de fusion nul (??) en PHP? Sep 25, 2025 am 01:28 AM

Réponse: L'opérateur de fusion vide de PHP (??) est utilisé pour vérifier si une variable ou une clé de tableau existe et n'est pas nul. S'il est vrai, il renvoie sa valeur, sinon il renvoie la valeur par défaut. Il évite l'utilisation de longs chèques ISSet (), convient pour gérer les variables et les clés de tableau non définies, telles que $ username = $ userInput ?? 'invité, et prend en charge les appels de chaîne, tels que $ thème = $ usertheme?

See all articles