Beat: HIER DIE LÖSUNG!

Beitrag lesen

mal so eine Frage an die Profis: ist das eigentlich in PHP wirklich kontraproduktiv (insbesondere im Hinblick auf Performance)? Ich würde unüberlegt mit JA antworten, sofern die Variable einmal oder zweimal angesprochen wird. Aber genau so gibt es z.B. im Bereich Java viele Stimmen die sagen, anstatt mehrfach (insbesondere in Schleifen) auf das selbe Array-Element zuzugreifen möge man eine lokale Variable verwenden.

  • Der Aufwand eine weitere Referenz zu erzeugen ist minimal, der Speichermehrbedarf ebenfalls
  • Der Compiler kann die Situation erkennen und bestimmte CPU-Register für die Variable verwenden, in die das Array nicht reinpasst
  • Der Zugriff auf ein Array erfordert, je nach Sprache, die Überprüfung gültiger Array-Grenzen, die für eine Variable nicht erforderlich ist

Klar, alles Kleinkram und Teile des Performance-Tunings an das man sich machen kann wenn es irgendwo hakt, aber in Anbetracht der wiederholt auftauchenden Aussagen in Richtung "kontraproduktiv" würde ich das doch gerne mal abhaken...

Ich glaube es ist nicht primär eine Sache der Performance. PHP erzeugt ja nur einen Alias, und erst, wenn du diesen manipulierst, wird es eine echte Kopie.

Ich denke, das Hauptproblem liegt im Namensraum. bei $_POST weisst du einfach, woher die Daten stammen, und wie du damit umgehen musst.
wenn du eine Zuweisung machst:

$adhoc_variable = $_GET['dangerous']
   $feierabend_string = $_GET['another_dangerous']

Dann verlierst du die Übersicht.

Nun ich kenne mich mit PHP eigentlich nicht aus. bei mir landet alles, was ich auslese, in einem Perl hash %Input.
Dieser wird dann validert und danach kopiert nach %User.

Wenn ich diese zwei Hashes, bzw. ihre einzelnen Elemente $User{name}, $Input{name} sehe, dann weiss ich, was ich vor mir habe: entweder validierten oder rohen Userinput.

Es gibt Argumente, variablen aus $_POST herauszuziehen und in einer eigenen zentralen variable abzulegen. Zum Beispiel, wenn du validierten Input entweder akzeptierst oder auf einen Defaultwert setzt. S_POST oder S_GET Variablen mit einen Default zu versehen, finde ich nämlich pervers, weil verwirrend. Es sind eben nicht die submitteten Inputs.

Das mal meine Meinung.

mfg Beat

--
Woran ich arbeite:
X-Torah
   <°)))o><                      ><o(((°>o