dedlfix: Warum Perl cooler ist als PHP

Beitrag lesen

Hi!

[] ist PHP spezifisch notwendig. Weder verlangen Spezifikationen es, noch ergibt es einen Sinn.

Einen Sinn sehe ich sehr wohl. Ohne [] bekommst du den Wert in skalarer Form. Mit [] bekommst du die Werte als Array, und das ganze auch noch verschachtelt, wenn du willst. Macht das Perl auch?

foo[bar][baz] ergibt $_POST['foo'] = array('bar' => array('baz' => value));

Wie macht denn Perl das? Entscheidet es von selbst, ob es einen skalaren Wert oder ein (flaches) Array liefert oder liefert es generell ein Array auch bei Einzelwerten?

Noch doofer ist es, dass PHP mich zwingt, bei dieser mangelhaften Implementierung zu bleiben.

Tut es nicht. Du kannst gern $_GET und $_POST ignorieren und die Auswertung von Querystring und Request-Body selbst übernehmen, wenn du das willst.

Dass PHP hier nicht sauber programmiert ist, und diesen Index-Operator nur als "Displacement" verwendet, anstatt ihn je nach Kontext individuell zu überladen, das ist ja noch nicht endgültig ausdiskutiert.

Das verstehe ich nicht.

Ihr habt da ein Missverständnis. Aus deinem Posting war nicht klar zu erkennen, dass du die [] in HTML-Eingabefeldnamen meinst (<input name="foo[]" ...). Tom ging von den als Operator in PHP verwendeten [] aus, also $string[4], um das 5. Zeichen/Byte im String anzusprechen beziehungsweise $array[key] für den Array-Zugriff.

Im Kontext einer anderen Codierung sollte es möglich sein, den Operator auch codierungsgerecht zu benutzen, in einem String also das Zeichen- und nicht die Byteposition anzusprechen.
Um die Byteposition anzusprechen, bedürfte es einer zusätzlichen Funktion "byte_pos()" oder wie auch immer man die nennen wollte.
In Perl ist das ganz einfach: Wenn Du _nicht_ dekodierst, hast Du Bytes. Wenn Du dekodierst, hast Du einen String.

Das passt wegen des Missverständnisses nicht zueinander.

Lo!