ces: variable mit url übergeben

Beitrag lesen

Sicherlich könnte es Fälle geben, wo das Kopieren eventuell
sinvoll wäre.

Und genau daran wollte ich auch nur erinnern. Mir stößt es etwas
säuerlich auf, wenn aus dem Blauen heraus irgendwelche scheinbar
absoluten Thesen in den Raum gestellt werden. Auf den Begriff
des Kopierens komme ich weiter unten noch mal zurück.

Das Script funktioniert nicht mehr, weil auf dem neuen
Server register_globals auf off gestellt ist.

Das war zumindest eine sehr wahrscheinliche Möglichkeit; auf
diesen Teil Deines Beitrages habe ich mich allerdings gar nicht
bezogen.

[...] wäre es viel sinnvoller, direkt mit $_POST['var'] zu arbeiten.

Falls es bei einer einfachen Struktur und überschaubaren Bezeichnern
bleibt, und falls die hier referenzierten Daten noch modifiziert werden,
könnte es sich - unter Einbeziehung aller Aspekte, wie Lesbarkeit,
Datensicherheit, Portierbarkeit und, ja, Performance - lohnen, direkt
mit den Referenzen in den Superglobalen zu arbeiten (was auch bei mir
häufig der Fall ist), aber weder Du noch ich können dazu aus unserer
Position heraus eine definitive Aussage bezüglich eines uns unbekannten
Skriptes treffen.

Das ist nur Speicherverschwendung.
Nicht unbedingt. Schon mal etwas von 'copy-on-write' gehört?
Ja, Copy-On-Write ist mir bekannt, aber ich sehe nicht, was das
mit diesem Script zu tun hat.

PHP benutzt hauptsächlich zwei Mechanismen, um den Speicher für Variablen
zu verwalten: die Referenzzählung ('reference counting') in Verbindung mit
einer Symboltabelle, und eben jenes 'copy-on-write'. Letzteres bewirkt,
daß neuer Speicher nicht schon bei Erteilung eines Alias zugeordnet wird,
sondern erst dann, wenn sich die Daten an der zugeordneten Speicheradresse
ändern:

$alt = 'Ein Test.';
$neu = $alt; // A

A) Ein Alias/Link/eine Referenz (wie auch immer Du es nennen möchtest)
names '$neu' wird für die Speicherstelle eingerichtet, auf die auch '$alt'
verweist. Der Inhalt wird nicht kopiert, der Symboltabelle wird für die
Adresse lediglich ein weiterer Anker und ein neuer Referenzwert hinzugefügt.

$neu = 'Ein weiterer Test.'; // B

B) Die nun abweichenden Daten werden an eine zur Verfügung stehende
Speicheradresse geschrieben und nun exklusiv über '$neu' referenziert,
das Alias '$neu' wird aus dem Eintrag der Symboltabelle für '$alt'
entfernt, und dessen Referenzwert zurückgesetzt.

Stark vereinfacht, natürlich. Der Punkt ist: bei 'A' wird weder kopiert
noch irgendein Zeiger verändert. Das geschieht - wenn überhaupt - erst
bei Modifikation der Daten in '$neu' - somit kann hier also auch nicht
von Speicherverschwendung die Rede sein.

Grüße