Warum hinterlassen PHP-Array-Beispiele ein nachfolgendes Komma?

80

Ich habe Beispiele wie die folgenden gesehen:

$data = array(
   'username' => $user->getUsername(),
   'userpass' => $user->getPassword(),
   'email' => $user->getEmail(),
);

In der Praxis habe ich das nachfolgende Komma jedoch immer nicht verlassen. Mache ich etwas falsch oder ist das nur eine andere Art, es zu tun? Wenn ich ein Framework verwenden würde, würde sich das nachfolgende Komma nicht negativ auf die Codegenerierung auswirken? Ich habe die Verwendung von nachgestellten Kommas in Array-Deklarationen auch in anderen Sprachen (Java, C ++) gesehen, daher gehe ich davon aus, dass die Gründe für das Verlassen von nachgestellten Kommas nicht spezifisch für PHP sind, aber dies hat mein Interesse geweckt.

ashurexm
quelle
1
Ich hätte schwören können, dass ich Analysefehler bekam, als ich Trainingskommas in PHP hinterließ.
Lotus Notes
Es ist möglich, denke ich. In diesem Beispiel wird es gut analysiert.
Ashurexm
Ja @LotusNotes Ich bin sicher, ich hatte auch schon einmal Fehler. Aber klar nicht mehr!
Meezaan-ud-Din

Antworten:

109

Warum hinterlassen PHP-Array-Beispiele ein nachfolgendes Komma?

Weil sie es können. :) Der PHP-Handbucheintrag für Array- Zustände:

Ein nachkommendes Komma nach dem letzten definierten Array-Eintrag ist zwar ungewöhnlich, aber eine gültige Syntax.

Im Ernst, dies dient lediglich der Vereinfachung, sodass Sie dem Array problemlos ein weiteres Element hinzufügen können, ohne zuerst das letzte Komma zum letzten Eintrag hinzufügen zu müssen.

Apropos andere Sprachen: Seien Sie in JavaScript vorsichtig damit. Einige ältere Browser geben einen Fehler aus, neuere erlauben dies jedoch im Allgemeinen.

Pekka
quelle
1
Das habe ich mir gedacht, ich war mir einfach nicht sicher, ob ich das Boot auf etwas vermisst habe. Ich denke, für Leute, die ihre Zeit in ein paar Sprachen verbringen, die dies erlauben, ist es wahrscheinlich eine anständige Angewohnheit. Angesichts der Tatsache, dass ich mit vielen verschiedenen Sprachen zu tun habe und JavaScript (und wer weiß, welche anderen Sprachen) Fehler verursachen kann, ist es für mich möglicherweise sicherer, meine Gewohnheit fortzusetzen, kein nachkommendes Komma zu hinterlassen.
Ashurexm
7
Neuere Versionen von JavaScript als IE6 / 7-Code erlauben dies jetzt explizit.
Statik
9
Perl lässt auch das nachfolgende Komma zu, und ich glaube, es wird empfohlen. Es ist eigentlich ziemlich schön, wenn man Code mithilfe der Quellcodeverwaltung zwischen Entwicklern teilt. Wenn Sie am Ende eine Zeile hinzufügen möchten und ein Komma hinzufügen müssen, bedeutet dies, dass Sie beide Zeilen berühren. Ein git blame(oder ein Äquivalent in einer anderen Quellcodeverwaltung) zeigt an, dass Sie diese Zeile geschrieben haben, obwohl Sie gerade ein Komma hinzugefügt haben. Keine große Sache, aber praktisch.
Redbmk
2
Es ist nützlich, wenn Sie Dateien unter Quellcodeverwaltung haben, um die Anzahl der geänderten Zeilen gering zu halten.
hakre
6
JSON auch, JSON hasst nachgestellte Kommas.
Kyle Hotchkiss
26

Dies ist eine gute Vorgehensweise beim Definieren eines Arrays in mehreren Zeilen. Es wird auch durch die Codierungsstandards von ZendFramework unterstützt :

Wenn Sie diese letztere Deklaration verwenden, empfehlen wir die Verwendung eines nachgestellten Kommas für das letzte Element im Array. Dies minimiert die Auswirkung des Hinzufügens neuer Elemente auf aufeinanderfolgende Zeilen und stellt sicher, dass keine Analysefehler aufgrund eines fehlenden Kommas auftreten.

Janci
quelle
22

Bei der Arbeit mit der Versionskontrolle (git) ist mir aufgefallen, dass, wenn wir einem Array 1 Element hinzufügen und wir kein nachfolgendes Komma haben, es so aussieht, als hätten wir 2 Zeilen geändert, da das Komma zur vorherigen Zeile hinzugefügt werden musste. Ich finde, das sieht schlecht aus und kann beim Betrachten der Dateiänderungen irreführend sein. Aus diesem Grund halte ich ein nachfolgendes Komma für eine gute Sache.

user985366
quelle
Und das ist definitiv der Grund, warum nachgestellte Kommas für :) Diff Konsistenz
Ninj
Ich weiß nicht, ob es etwas damit zu tun hat, warum es dort ist. Ich würde nicht denken. Aber ich finde es nützlich.
user985366
Aber das ist der Grund, warum es hier ist. Man könnte sagen, es ist hier, um Fehler in der nächsten Zeile hinzuzufügen. Dies ist jedoch nicht der Fall, da heutzutage keine IDE das Hinzufügen von Zeilen ohne COMME zulässt. Es wird eine Fehlermeldung angezeigt.
Ninj
@ Ninj Interessant. Ich habe Ihren ersten Kommentar als ironisch angesehen, war mir aber nicht sicher.
user985366
1
Entschuldigung, es könnte ironisch ausgesehen haben. Es war sehr ernst. Wir fügen Kommas in die letzte Array-Zeile ein, um die Versionsverwaltung von Diffs zu erleichtern.
Ninj
8

Weil es die Einträge einheitlich hält.

Wenn Sie die Bestellung tauschen oder Einträge hinzufügen oder löschen mussten, ist es sehr praktisch, ein nachfolgendes Komma zu hinterlassen.

Wenn das letzte Element kein Komma haben kann, müssen Sie das letzte Komma beibehalten, indem Sie Einträge ändern. Es ist eine sinnlose Übung und eine Verschwendung von Zeit und Fingerstrichen, da die Absicht, Einträge auszutauschen oder zu ändern, bereits erreicht ist.

Durch das Zulassen eines nachgestellten Kommas für das letzte Element wird der Programmierer davon befreit, sich um dieses nervige und fruchtlose Detail kümmern zu müssen.

ahnbizcad
quelle
6

Der Grund ist das Festschreiben von Änderungen.

Wenn Sie beim Hinzufügen eines neuen Elements das nachfolgende Komma hinzufügen müssen. Sie ändern 1 Zeile und fügen 1 Zeile hinzu. (- ++)

Beim Hinzufügen eines neuen Elements, wenn sich bereits ein Komma in der obigen Zeile befindet. Es gibt nur 1 hinzugefügte Zeile und keine geänderten. (+)

Yani
quelle
5

Ich kann nicht für andere Personen sprechen, aber ich lasse normalerweise ein nachkommendes Komma in meinem Code. Ich mache das, weil ich mir keine Sorgen machen muss, wenn ich später zum Array hinzufüge, dass ich ein Komma verpasse, weil ich vergessen habe, ein Komma zu der vorherigen Zeile hinzuzufügen.

Peter Horne
quelle
4

Ich denke, obwohl es erlaubt ist, ist es eine schlechte Übung, es ist, als würde man das letzte Semikolon Ihrer Funktionen und Schleifen weglassen.

Skelly1983
quelle
3

Ich mache immer ein nachfolgendes Komma, weil es hilft, Syntaxfehler beim Hinzufügen neuer Array-Elemente zu vermeiden ... es ist nur eine gute Praxis.

Kirzilla
quelle
3
Es tut mir leid, dass ich das wiederbelebt habe, aber wie verhindert ein nachfolgendes Komma später Syntaxfehler? Ich habe gerade herausgefunden, dass PHP das nachfolgende Komma zulässt - aber ich kann die Verwendung dafür nicht sehen / finden. Das spätere Hinzufügen neuer Indizes erfolgt weiterhin $arr[] = ....
Daniel
@ Daniel, er spricht davon, später zum Quellcode zurückzukehren und dem Array-Literal eine weitere Zeile hinzuzufügen.
Sam Dufel
0

Das hat mich kürzlich überrascht, aber es macht Sinn. Ich habe lange versucht, mich an eine frühere Konvention zu halten, die dasselbe bewirkt, nämlich das Trennungskomma vor jeden Eintrag und nicht am Ende zu setzen.

$data = array(
   'username' => $user->getUsername()
 , 'userpass' => $user->getPassword()
 , 'email' => $user->getEmail()
);

Die Kommas sind auch alle so angeordnet, was gut aussieht, aber das Einrücken kann etwas umständlich sein. Vielleicht hat es aus diesem Grund im Laufe der Jahre nicht viel erreicht, und andere haben mich gefragt, warum ich das mache. Ich denke, die Lösung von PHP ist ein guter Kompromiss, und auf jeden Fall ist sie jetzt anscheinend die akzeptierte Lösung.

JohnBrooking
quelle
0

Ich habe am Anfang des neuen Eintrags immer Kommas hinzugefügt. Compiler sehen darin das einstellige Zeichen für Vorausschau, das besagt, dass "noch eines kommt". Ich weiß nicht, ob moderne Compiler LR (1) verwenden (linksrekursiv, Single-Token-Look-Ahead), aber ich denke, dort entsteht der Syntaxfehler, wenn ein Komma nichts hinter sich hat. Es ist selten, dass mir jemals ein anderer Entwickler zugestimmt hat, aber es sieht so aus, als ob JohnBrooking es tut!

Bill Hedge
quelle