PHP Portal » PHP Forum » Entwicklung » Webprogrammierung mit PHP, Perl, usw. » Singleton?

Singleton? 

von
Besucher
Zitat
Hallo allerseits,

ich stehe vor einem kleinen Problem.

Und zwar habe ich mir eine SQL Klasse geschrieben die mir ein paar Funktionen bereitstellt zum vereinfachen der Datenbankkommunkation.

Die Frage ist jetzt: Da ich diese Klasse bzw. das Objekt was ich ich in den einzelnen Seiten verwende auch in den anderen von mir geschriebenen Klassen nutzen möchte, muss ich momentan jedes mal das SQL Objekt an den Konstruktor der anderen Klassen weitergeben, welches dann in einem "lokalen" Klassenobjekt weiterverwendet wird. Das ist aber sicherlich nicht Sinn der Sache.

die Frage die ich mich stelle ist nun, ob man es nach dem Singleton Modell machen sollte also die Klasse nur sich selbst instantiieren lassen und anschließend überall nur noch mit sql::getInstance()->funktion ... verwenden sollte, oder ob in diesem Fall eine Vererbung der SQL klasse an die anderen Klassen Sinn macht. Denn es könnte ja auch sein, dass ich 2 Instanzen benötige wegen dem Zugriff auf 2 verschiedene Datenbanken während eines Skripts.

Werbung

Re: Singleton? 

von
Neuling
Zitat
Dann bau doch deine SingleTon Klasse so auf, dass du zwei Verbindungen verwalten kannst ?!

Re: Singleton? 

von
the Boss
Zitat
es ist nicht sinnvoll, einem Singleton zwei Werte zu geben,
das widerspricht ja gerade dem Singleton

Ich denke, eine Datenbankklasse sollte kein Singleton sein,
gerade weil man mal mehrere Objekte benötigt.

Re: Singleton? 

von
Neuling
Zitat
Aber es dauert dann doch "ewig", wenn du immer eine Verbindung aufbaust. So würde der User doch immer die gleiche Verbindung bekommen.

Wenn du 10.000 User aktiv auf dem Server hast und alle bauen ständig eine Verbindung auf, dann wäre dich SingleTon besser ?

Re: Singleton? 

von
the Boss
Zitat
Bei PHP bauen 10.000 User sowieso ständig eine Verbindung auf Das Singleton gilt nur innerhalb eines Serverrequest, nicht über die Anfrage eines einzelnen Users hinaus.
Die kann man nur mit persistenten Datenbankverbindungen erschlagen, aber dieses Connectionpooling hat nicht mit Singleton zu tun.

Schnellantwort

ähnliche Themen