2016-07-13 17 views
0

Ich habe Zweifel mit Instanzen in PHP. Ich habe eine Klasse erstellt, die im Grunde Abfragen an eine Datenbank sendet. Die Frage ist, dass es richtig ist, jedes Mal, wenn ich eine Abfrage ausführen möchte, eine Instanz zu erstellen oder einfach dieselbe Instanz zu verwenden, die den dieser Klasse zugewiesenen Speicher überschreibt. Zum Beispiel:PHP Klassen und Instanzen

//Select 
$conversation = new mQuery(); 
$conversation->operation = "select"; 
$conversation->data = array("bla", "bla", "bla"); 
$result = $conversation->execute(); 

//Update 
$conversation = new mQuery(); 
$conversation->operation = "update"; 
$conversation->data = array("bla", "bla", "bla"); 
$result = $conversation->execute(); 

VERSUS

//Create instance ONCE 
$conversation = new mQuery(); 

//Select 
$conversation->operation = "select"; 
$conversation->data = array("bla", "bla", "bla"); 
$result = $conversation->execute(); 

//Update 
$conversation->operation = "update"; 
$conversation->data = array("bla", "bla", "bla"); 
$result = $conversation->execute(); 

Vielen Dank im Voraus.

+0

Normalerweise erstellen wir ein neues Objekt für jede Operation speziell, wenn das Objekt nur dafür ist. Außerdem macht es den Code sauberer und einfacher zu verstehen. Die Sprache sollte die Garbage Collection für Sie übernehmen. – Hani

+1

Es hängt auch von der Implementierung der Klasse ab. Was passiert, wenn Sie vergessen haben, '-> data' aufzurufen und die Daten aus dem vorherigen Lauf wieder verwendet? – FirstOne

+0

@FirstOne Deshalb bin ich im Zweifel. Vielleicht ist es besser, jedes Mal eine neue Instanz zu erstellen, um den Speicher zu bereinigen. Wenn eine falsche Variable vorhanden ist, schlägt sie fehl, anstatt sie aus der vorherigen Zuweisung zu übernehmen. – ProtectedVoid

Antwort

0

Scheint wie eine gute wiederverwendbare Klasse, die mQuery, ich würde für die zweite Option empfehlen, da die Klasse und ihre Methode scheinen wie Dienstprogrammmethoden und nichts bedeutsames aus der vorherigen Abfrage in der Instanz gespeichert ist.

+0

_ "[...] und nichts bedeutsames aus der vorherigen Abfrage wird in der Instanz gespeichert." _ Wenn Sie den Typ der Abfrage berücksichtigen und ihre Daten _nicht signifikant _... (Sehen Sie, was ich in [diesem Kommentar] (https://stackoverflow.com/questions/38361918/php-classes-and-instances#comment64136374_38361918)) – FirstOne

+0

@FirstOne Aus der Struktur, die von der OP zur Verfügung gestellt wird, scheint es ziemlich offensichtlich, dass sie wissen, um die Daten zu nennen und ihre bereits in der ' $ Ergebnis'. Außerdem kann das Vergessen einer Codezeile überall passieren und zu allen Arten von Diskrepanzen führen. Das ist ein falscher Code, ein Fehler und die Wahl einer Methode gegenüber einer anderen schützt Sie nicht immer davor. – coderodour

+0

Mach dir keine Sorgen lol, ich habe deine Antwort nicht downvoted ... Ich denke nur, dass ein Code, der nicht funktioniert, besser ist als ein Code, der funktioniert, aber könnte _unwated_ Ergebnisse (wie die Verwendung der vorherigen Daten) erzeugen. pinkeln ... – FirstOne