sql >> Database >  >> RDS >> Mysql

php singleton-databaseverbinding, is deze code een slechte gewoonte?

Singletons zijn slecht nieuws.

  • Ze introduceren een globale staat in een programma. De meeste programmeurs zouden moeten weten waarom de mondiale staat slecht is.
  • Ze introduceren een strakke koppeling tussen de singleton en elke klasse die het gebruikt. Dit betekent dat je de betreffende klassen niet opnieuw kunt gebruiken zonder ook de singleton opnieuw te gebruiken.
  • Ze maken unit-testen van klassen die afhankelijk zijn van de singleton problematisch omdat je de singleton niet gemakkelijk kunt vervangen door een mock.
  • Ze moedigen een coderingsstijl aan waarbij klassen proberen hun eigen afhankelijkheden op te lossen. Dit is slecht omdat het de duidelijkheid kan verminderen over welke afhankelijkheden de klas heeft.
  • PHP heeft een Share Nothing Architectuur, wat inhoudt dat PHP-singles helemaal geen singletons zijn, er kunnen meerdere instanties tegelijk actief zijn (één per open verzoek).
  • Wat gebeurt er als je op een later tijdstip plotseling ontdekt dat je eigenlijk meer dan één van de middelen nodig hebt die door de singleton worden geleverd? Het komt vaker voor dan je zou denken

Je kunt beter kijken naar in plaats daarvan, omdat het de bovenstaande problemen oplost.



  1. Een databasediagram maken in MySQL Workbench

  2. Grootte van groot object ophalen in PostgreSQL-query?

  3. MySQL - Als het begint met een cijfer of een speciaal teken

  4. Forken of niet forken?