2010-11-19 6 views
0

Es tut mir leid, wenn dies klingt wie eine wirklich dumme Frage, aber ich beginne gerade das Verständnis der objektorientierten Programmierung und ich bin etwas verwirrt über das Singleton-Muster für PHP.OOP Query-Funktion

Wie würde ich eine Abfrage zusammen mit dem Speichern der Ergebnisse aus den abgerufenen Zeilen als Variablen in das Singleton-Muster integrieren?

Zum Beispiel, wie würde der Code unten integriert werden?

$query = "SELECT * FROM members WHERE email= '".mysql_real_escape_string($_SESSION['email1'])."'"; 
$result = mysql_query($query) or die(mysql_error()); 
$number = mysql_num_rows($result); 
$i = 0; 

while ($i < $number) 
{ 

    $first_name = mysql_result($result,$i,"first_name"); 
    $last_name = mysql_result($result,$i,"last_name"); 
    $state = mysql_result($result,$i,"home_state"); 
    $id_district = mysql_result($result,$i,"district"); 
    $political_views = mysql_result($result,$i,"political_views"); 
    $first_issue = mysql_result($result,$i,"first_issue"); 
    $second_issue = mysql_result($result,$i,"second_issue"); 
    $third_issue = mysql_result($result,$i,"third_issue"); 
    $email = mysql_result($result,$i,"email"); 
    $iStand = mysql_result($result,$i,"iStand"); 
    $photo = mysql_result($result,$i,"photo"); 
    $code = mysql_result($result,$i,"code"); 
    $changed = mysql_result($result,$i,"changed"); 
    $mem_ID   = mysql_result($result,$i,"member_ID"); 
    $pass = mysql_result($result,$i,"password"); 
    $privacy = mysql_result($result,$i,"privacy"); 
    $since = mysql_result($result,$i,"invite_date"); 
    $nombre = mysql_result($result,$i,"peer_name"); 

    $i++; 
    } 
+0

Nicht in Zusammenhang mit der Frage, aber was ist dieser Code an erster Stelle? Warum sollten Sie mehrere Zeilen holen, nur um die Werte aus der LETZTEN Zeile in Variablen zu setzen? Warum sollten Sie jede Spalte einer Variablen einzeln zuweisen, anstatt nur die ganze Zeile als assoziatives Array (mysql_fetch_array) zu fragen? Dieser Code sollte nicht existieren! –

+0

Es gibt nur eine Zeile, die aus der Datenbank abgerufen wird, da das E-Mail-Feld eindeutig ist und daher nicht zwei Benutzer die gleiche E-Mail haben können. – Lance

+0

In diesem Fall sollten Sie keine while-Schleife benötigen. – BoltClock

Antwort

0

Ein Singleton-Muster hat einen bestimmten Zweck:

the singleton pattern is a design pattern used to implement the mathematical concept of a singleton, by restricting the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system

Dies ist nicht geeignet für die Funktionalität, die Sie oben vorgestellt haben.

Ein Singleton-Muster wird beispielsweise beim Erstellen einer systemweiten Einstellungsklasse verwendet. Der Singleton verhindert, dass er mehr als einmal (oder überhaupt) instanziiert wird, und bietet statt dessen einen einzigen Platz zum Abrufen und Festlegen von Einstellungsinformationen.

+1

Sie könnten hinzufügen, dass das Singleton ein AntiPattern ist, das vermieden werden sollte. – Gordon