Warum müssen PHP-Variablen ein Dollarzeichen vorangestellt werden?

13

Ich verstehe, dass allen PHP-Variablen ein Dollarzeichen (z. B. $someValue = 1) vorangestellt werden muss , aber warum ist das so? Warum wurde diese Designentscheidung getroffen?

Der Grund, den ich frage, ist, dass meine Freundin gefragt wurde, warum PHP-Variablen mit einem Dollarzeichen beginnen müssen, und mir wurde klar, dass ich keine Ahnung hatte, warum diese syntaktische Wahl getroffen wurde.

Irgendwelche Ideen?

Ivan
quelle
11
Weil der Entwickler von PHP nicht wusste, wie man einen Parser schreibt. Daher wurde eine Krücke benötigt, um Identifikatoren zu identifizieren.
ThomasX
@ThomasX - Haha, Sie haben wahrscheinlich Recht ... Ich bin auch kein Fan der C-Code-Basis (yikes)
Ben DeMott
Ich denke, dass nur wer PHP erstellt hat, diese Frage beantworten kann.
Kiamlaluno
1
Ich vermute, es soll Entwickler ermutigen ... jedes Mal, wenn Sie $ sign setzen, sind Sie näher an Ihrer Zahlung!
Kamil Klimek
Ich würde mich freuen, wenn ich nicht $this->vor jeder Klassenvariable und -funktion verwenden müsste .
Chloe,

Antworten:

8

Nun, ich bin auch kein großer Fan der $$$ (es ist mir egal, wie viel die Variable gekostet hat). Aber es kommt von Perl.

Interpretierte Skriptsprachen wie Perl oder PHP verwenden das $, um Variablen schnell zu identifizieren und zu analysieren. Es ist nur eine Optimierung für den Dolmetscher. Aber definitiv keine Optimierung für den Programmierer!

JSideris
quelle
Wie ist es nicht eine Optimierung für einen Programmierer? - Ich kann Variablen sofort identifizieren und von anderen Konstrukten unterscheiden.
Johannes
Ich glaube, Larry Wall hat einmal gesagt, dass das $ vor den Variablen es einfacher macht, Perl zu erweitern, ohne den vorhandenen Code zu beschädigen. Er könnte neue Schlüsselwörter hinzufügen, die nicht bereits als Variablen verwendet würden. Es sollte dieser Artikel sein , aber er steckt hinter einer Paywall :-(
SL Barth - Monica
@johannes Ich kann auch ohne das $ sofort eine Variable in C identifizieren, da ich mir alle Schlüsselwörter und Funktionen in Klammern eingeprägt habe.
JSideris
1
@Bizorke C hat wahrscheinlich weniger Schlüsselwörter (hat sie nicht gezählt), aber PHP hat Konstanten ohne $, obwohl die Leute normalerweise Konstanten in UPERCASE verwenden. Und nun, wenn Sie alle Stichwörter usw. auswendig kennen, sind Sie fortgeschritten. Mit dieser visuellen Hilfe ist es möglicherweise einfacher, dorthin zu gelangen. Aber dann: Dies ist Geschmackssache. Meine Annahme für eine Antwort wäre "kopiert aus Perl" und "einfacher zu analysieren", auch bekannt als. historische entscheidung
johannes
@ Johannes Ich habe nicht gesagt, dass das $ von Perl kopiert wurde, ich sagte, es kommt von Perl; PHP basiert auf Perl. Ja, es ist eine Präferenz. Ich mag es nicht, jedes Mal $ einzugeben, und in vielen Editoren wird $ nicht ausgewählt, wenn Sie auf das Wort doppelklicken (verlangsamt das Kopieren / Einfügen). Ja, PHP hat etwas mehr Schlüsselwörter als C, aber mein Argument gilt immer noch für C ++, Java usw. Schlüsselwörter sind im Allgemeinen leicht zu merken und in der Regel relativ konsistent zwischen den Sprachen. Auch PHP ist nicht NUR für Anfänger. Ich programmiere jeden Tag in PHP (und vielen anderen Sprachen), und ich kann Ihnen sagen, dass das $ nichts getan hat, als mich zu bremsen.
JSideris
5

PHP war ursprünglich eine Metasyntax, die analysiert und einfach dynamisch in kompilierte C-Programmfunktionen aufgerufen wurde.
Auf diese Weise können Sie es sich ähnlich wie ein "Shell" -Programm für das "Web"
vorstellen. Es ist kein Wunder, dass Variablen mit $ dollarsigns ähnlich wie Shell-Variablen verwendet wurden.

Als ich 12 Jahre alt war und PHP 3 lernte ... als meine erste Programmiersprache - das $ hat das Leben so viel einfacher gemacht. Ich wusste, was eine Variable ist, aber eine Erinnerung an den gesamten Quellcode, den ich gelesen habe, ermöglichte das Lernen. Ich bin mir nicht sicher, ob ich heute hier wäre, wenn ich nicht mit PHP anfangen würde.

Hier ist ein Beispiel von -> http://www.php.net/manual/en/history.php.php

<! - include /text/header.html ->

<! - getenv HTTP_USER_AGENT ->
<! - ifsubstr $ exec_result Mozilla ->
  Hey, Sie verwenden Netscape! <P>
<! - endif ->

<! - sql database select * from table where user = '$ username' ->
<! - wenn nicht $ numentries 1 ->
  Entschuldigung, dieser Datensatz existiert nicht <p>
<! - endif exit ->
  Willkommen <! - $ user ->! <P>
  Sie haben noch <! - $ index: 0 -> Guthaben auf Ihrem Konto. <P>

<! - include /text/footer.html ->
Ben DeMott
quelle
2
Ich bezweifle zwar nicht, dass das Dollarzeichen für Sie hilfreich war, aber ich frage mich, ob es vielleicht die allgemeine Einfachheit von PHP war, die mehr damit zu tun hatte. Ich habe als Teenager mit grundlegendem Javascript angefangen und fand, dass Variablen ziemlich einfach zu erlernen waren, wahrscheinlich, weil die Javascript-Beispiele in jenen Tagen so einfach waren.
Matt Browne