Wann ist es gut verwenden, übergeben durch Referenz in PHP?
In C++ wenn Sie über ein großes array an eine Funktion, die Sie brauchen, um es zu übergeben, die durch Verweis, so dass es nicht kopiert wird, um die neue Funktion Speicher zu verschwenden. Wenn Sie nicht möchten, dass es geändert übergeben Sie es durch const-Referenz.
Kann jedermann stellen Sie sicher, dass die übergabe per Referenz wird mich retten memory in PHP als gut. Ich kenne PHP nicht verwenden Adressen für Referenzen wie C++, das ist, warum ich bin etwas unsicher. Das ist die Frage.
InformationsquelleAutor der Frage | 2011-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das folgende gilt nicht für Objekte, wie es bereits hier gesagt. Die übergabe von arrays und skalaren Werte von Referenz-sparen Sie nur Speicher, wenn Sie planen, ändern der übergebene Wert ist, weil PHP verwendet copy-on-change (aka copy-on-write -) Politik. Zum Beispiel:
Zusammenfassen:
Wenn Sie arbeiten auf einem sehr großen array und plan über die änderung in einer Funktion, die Sie tatsächlich verwenden sollten, einen Verweis, um zu verhindern, dass es immer kopiert, das kann ernsthaft verringern die Leistung oder auch Abgas-Ihr memory limit.
Wenn es vermeidbar ist allerdings, das kleine arrays oder Skalare Werte), würde ich immer verwenden, funktionalen Stil Ansatz mit keine Nebenwirkungen sind, weil, sobald Sie passieren etwas durch den Verweis, man kann nie sicher sein, welche variable übergeben kann, halten Sie nach dem Aufruf der Funktion, was manchmal dazu führen kann zu unschönen und schwer zu findende Fehler.
IMHO Skalare Werte sollten nie per Referenz übergeben werden, da die Auswirkungen auf die Leistung kann nicht groß zu rechtfertigen, den Verlust von Transparenz in Ihrem code.
InformationsquelleAutor der Antwort fresskoma
Die kurze Antwort ist Referenzen verwenden, wenn Sie Sie brauchen, die Funktionalitätdie Sie bieten. Glaube nicht, dass von Ihnen in Bezug auf Speicherverbrauch oder Geschwindigkeit. Übergabe per Referenz ist immer langsamer, wenn die variable schreibgeschützt ist.
Alles, was von Wert übergeben wird, einschließlich der Objekte. Aber, es ist die handle des Objekts, das übergeben wird, so dass die Leute oft irrtümlich nennen es durch-Referenz, weil es so aussieht.
Dann welche Funktionen bietet Sie? Es gibt Ihnen die Fähigkeit, ändern Sie die variable in der aufrufenden scope:
So, wenn Sie eine solche Funktionalität (in den meisten Fällen Sie nicht), dann verwenden Sie eine Referenz. Ansonsten einfach durch Wert übergeben.
Funktionen, die wie folgt Aussehen:
manchmal sind gute Kandidaten für die übergabe per Referenz, aber es sollte absolut klar sein, dass die Funktion ändert die übergebene variable. (Und wenn eine solche Funktion ist nützlich, oft ist es, weil es sollte wirklich nur ein Teil der Klasse Bearbeiten der eigenen Daten).
InformationsquelleAutor der Antwort Matthew
In PHP :
&
in der Funktion der Erklärung.Für die Leistung Teil Ihrer Frage, PHP ist nicht deal mit, dass Sie die gleiche Weise wie C/C++ ; Sie sollte folgende Artikel Lesen : verwenden Sie keine PHP-Referenzen
1 ist. Oder das ist, was wir in der Regel sagen-auch wenn es nicht "absolut wahr" -- siehe Objekte und Referenzen
InformationsquelleAutor der Antwort Pascal MARTIN