Die Frage ist, ob eine Datenbankverbindung durch Referenz oder Wert übergeben werden soll?Datenbankverbindung durch Referenz in PHP übergeben
Für mich frage ich speziell eine PHP zu MySQL-Verbindung, aber ich denke, dass es für alle Datenbanken gilt.
Ich habe gehört, dass in PHP, wenn Sie eine Variable an eine Funktion oder ein Objekt übergeben, dass es im Speicher kopiert wird und daher sofort doppelt so viel Speicher verwendet. Ich habe auch gehört, dass es nur kopiert wird, wenn Änderungen an dem Wert vorgenommen wurden (z. B. wenn ein Schlüssel einem Array hinzugefügt oder daraus entfernt wird).
In einer Datenbankverbindung würde ich denken, dass es in der Funktion geändert wird, da die Abfrage Dinge wie die letzte INSERT ID oder NUM Zeilen ändern könnte. (Ich denke, das ist eine andere Frage: Sind Dinge wie num Zeilen und einfügen ID in der Verbindung gespeichert oder ein tatsächlicher Anruf zurück zur Datenbank gemacht wird?)
Also, spielt es eine Rolle Speicher oder Geschwindigkeit weise, wenn die Verbindung besteht durch Referenz oder Wert? Macht es einen Unterschied zwischen PHP 4 und 5?
"Funktion DoSomething1 (& $ connection) {...}" ist keine Call-Time-Pass-by-Referenz –
Ich wollte nur das gleiche sagen wie Tom - das ist KEIN Anruf-Time Pass-by- Referenz, die, wie der Name schon sagt, zur Zeit der Funktion auftritt. Berufung, keine Erklärung. Call-Time-Pass-by-Referenz sieht so aus Php doSomething (& $ conn); ?> –
Der globale Status ist normalerweise eine schlechte Antwort auf jedes Problem. – troelskn