Variablen Übergabe Interna [byRef,ByVal]
ivarteq
- php
0 dedlfix
Hallo Zusammen,
Suche den optimalen Weg Variablen zu übergeben.
In PHP können Variablen auf 2 Arten übergeben werden:
[1] byVal, der Wert wird kopiert.
[2] byRef, ein Zeiger auf den Wert wird übergeben.
Beispiel:
$string = 'Ziemlich langer Text';
function gibZeichen1(&$string)
{
return $string{0};
}
Hier wurde $string nicht kopiert und dadurch Speicherplatz und Rechenzeit gespart.
Also sollte ich Variablen, die ich nicht ändere, immer byRef übergeben?
Dazu habe ich was gelesen:
PHP speichert Variablen in 2 Strukturen:
a) Variablen Struktur mit Informationen zur Variablen
b) Wert Struktur
wobei die Variablen Struktur auf Ihren Wert verweist.
Wird eine Variable kopiert, so wird eine neue Variablen Struktur angelegt und auf den alten Wert gezeigt.
Erst wenn sich der Wert ändert, wird eine neue Wert Struktur für die neue Variable angelegt und daruf verwiesen.
1.) Stimmt das? (Kennt jemand eine online Quelle dafür)
2.) Dann ist es überflüssig, Variablen, die ich nicht ändere, standardmässig byRef zu übergeben, um Speicher und Rechenzeit zu sparen?
echo $begrüßung;
Suche den optimalen Weg Variablen zu übergeben.
In PHP können Variablen auf 2 Arten übergeben werden:
[1] byVal, der Wert wird kopiert.
[2] byRef, ein Zeiger auf den Wert wird übergeben.
[3] je nach technischer Notwendigkeit. Wenn du eine Referenz benötigst, z.B. weil der Wert der übergebenen Variable geändert werden soll, dann nimm eine Referenz. Mal abgesehen davon, dass es vielleicht nicht unbedingt die beste Art und Weise ist, wenn übergebene Werte geändert werden. So etwas wird an der aufrufenden Stelle durch reinen Programcode nicht deutlich, da dort kein & mehr stehen muss, bzw. nicht ungestraft stehen darf. Seit PHP 5 werden Objekte übrigens generell per Referenz übergeben.
Dazu habe ich was gelesen:
PHP speichert Variablen in 2 Strukturen:
a) Variablen Struktur mit Informationen zur Variablen
b) Wert Struktur
wobei die Variablen Struktur auf Ihren Wert verweist.Wird eine Variable kopiert, so wird eine neue Variablen Struktur angelegt und auf den alten Wert gezeigt.
Erst wenn sich der Wert ändert, wird eine neue Wert Struktur für die neue Variable angelegt und daruf verwiesen.1.) Stimmt das? (Kennt jemand eine online Quelle dafür)
http://derickrethans.nl/php_references_article.php
Ein Link dahin versteckt sich in der Beschreibung zu debug_zval_dump().
2.) Dann ist es überflüssig, Variablen, die ich nicht ändere, standardmässig byRef zu übergeben, um Speicher und Rechenzeit zu sparen?
So sieht es aus. Siehe dazu auch die einleitenden Sätze des Kapitels Returning References.
echo "$verabschiedung $name";