Maison > développement back-end > tutoriel php > Les singletons sont-ils vraiment nécessaires pour accéder à la base de données PHP ?

Les singletons sont-ils vraiment nécessaires pour accéder à la base de données PHP ?

Patricia Arquette
Libérer: 2024-12-22 22:40:11
original
329 Les gens l'ont consulté

Are Singletons Really Necessary for PHP Database Access?

Singletons : un mythe dans l'accès aux bases de données PHP

Vous remettez en question la nécessité des singletons pour l'accès aux bases de données PHP, en considérant le singleton simplifié suivant class :

class Database {
    private static $db;

    private function __construct(){}

    static function get() {
        if(!isset(self::$db))
            self::$db = new PDO(...);

        return self::$db;
    }
}
Copier après la connexion

Vous vous demandez pourquoi cela ne suffirait pas à la place d'une classe singleton plus complexe avec un singleton() méthode.

Démystifier l'utilité des singletons en PHP

En PHP, les singletons offrent peu ou pas d'avantages :

  • Mémoire Conservation : les singletons visent à réduire l'utilisation de la mémoire en partageant des instances en mémoire partagée. Cependant, en PHP, les objets résident dans la mémoire de requête privée, ce qui rend cet objectif non pertinent.
  • Application de Singleton : les singletons conceptuels peuvent ne pas nécessiter de mécanismes de langage pour leur application. Ne considérer que les singletons lors de la création d'une deuxième instance entraînera des effets néfastes.

Inconvénients des singletons

  • Couplage global : Singletons introduire des dépendances de portée globale, compliquant les tests et maintenabilité.
  • Alternative à l'injection de dépendances : Lorsqu'une seule instance est requise dans plusieurs classes, l'injection de dépendances fournit une solution plus propre et plus testable.

Le scepticisme d'Erich Gamma

Même l'un des créateurs du modèle singleton, Erich Gamma, remet désormais en question son utilité :

  • "Je suis favorable à l'abandon du Singleton. Son utilisation est presque toujours une odeur de design"

Quand les singletons pourraient être applicables

Malgré le scepticisme général à l'égard des singletons en PHP, considérez ces scénarios :

  • Point d'accès global : La création d'un point d'accès global pour une instance au sein de la même requête PEUT être justifiée, mais peut introduire des problèmes de couplage et de maintenance.
  • Élimination des secondes instances : n'implémentez des singletons que lorsqu'il y a un besoin urgent d'empêcher des instances supplémentaires d'être créé.

Ressources supplémentaires

  • [Tester des singletons en PHP : pourquoi c'est délicat](link_to_How_is_testing_the_registry_pattern_or_singleton_hard_in_PHP)
  • [Inconvénients de Singleton Classes de base de données](link_to_What_are_the_disadvantages_of_using_a_PHP_database_class_as_a_singleton)
  • [Diagramme de décision pour les singletons](link_to_Singleton_Decision_Diagram)

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal