Mysql
 sql >> Datenbank >  >> RDS >> Mysql

php Singleton-Datenbankverbindung, ist dieser Code eine schlechte Praxis?

Singletons sind schlechte Nachrichten.

  • Sie führen den globalen Zustand in ein Programm ein. Die meisten Programmierer sollten damit vertraut sein, warum der globale Zustand schlecht ist.
  • Sie führen eine enge Kopplung zwischen dem Singleton und jeder Klasse ein, die es verwendet. Dies bedeutet, dass Sie die betreffenden Klassen nicht wiederverwenden können, ohne auch den Singleton wiederzuverwenden.
  • Sie machen Unit-Tests von Klassen, die vom Singleton abhängen, problematisch, weil Sie den Singleton nicht einfach durch einen Schein ersetzen können.
  • Sie fördern einen Programmierstil, bei dem Klassen versuchen, ihre eigenen Abhängigkeiten aufzulösen. Dies ist schlecht, da es die Klarheit darüber verringern kann, welche Abhängigkeiten die Klasse hat.
  • PHP hat eine Share-Nothing-Architektur, was bedeutet, dass PHP-Singletons überhaupt keine Singletons sind, es können mehrere Instanzen gleichzeitig aktiv sein (eine pro offene Anfrage).
  • Was passiert, wenn Sie zu einem späteren Zeitpunkt plötzlich feststellen, dass Sie tatsächlich mehr als eine der vom Singleton bereitgestellten Ressourcen benötigen? Es ist ein häufigeres Szenario, als Sie vielleicht denken

Sehen Sie sich am besten an stattdessen, da es die oben genannten Probleme löst.