Dlaczego zmienne PHP muszą być poprzedzone znakiem dolara?

13

Rozumiem, że wszystkie zmienne PHP muszą być poprzedzone znakiem dolara (np. $someValue = 1), Ale dlaczego tak jest? Dlaczego dokonano tego wyboru projektu?

Pytam, dlaczego moja dziewczyna zapytała, dlaczego, kiedy wspomniałem, że zmienne PHP muszą zaczynać się od znaku dolara, i zdałem sobie sprawę, że nie mam pojęcia, dlaczego dokonano tego wyboru składniowego.

Jakieś pomysły?

Ivan
źródło
11
Ponieważ twórca PHP nie wiedział, jak napisać analizator składni. Potrzebna była więc kula do identyfikacji identyfikatorów.
ThomasX
@ThomasX - Haha, prawdopodobnie masz rację ... Nie jestem też fanem bazy kodu C (tak)
Ben DeMott
Myślę, że tylko ten, kto stworzył PHP, może odpowiedzieć na to pytanie.
kiamlaluno
1
Sądzę, że ma to zachęcić programistów ... za każdym razem, gdy wystawisz znak $, jesteś bliżej płatności!
Kamil Klimek
Byłbym szczęśliwy, gdybym nie musiał używać $this->przed każdą zmienną i funkcją klasy.
Chloe,

Odpowiedzi:

8

Cóż, tak naprawdę nie jestem wielkim fanem $$$ (tak naprawdę nie obchodzi mnie, ile kosztowała zmienna). Ale pochodzi z perla.

Interpretowane języki skryptowe, takie jak perl lub php, używają $ do szybkiego identyfikowania i analizowania zmiennych. To tylko optymalizacja dla tłumacza. Ale zdecydowanie nie jest to optymalizacja dla programisty!

JSideris
źródło
Jak to nie jest optymalizacja dla programisty? - Potrafię natychmiast zidentyfikować zmienne i odróżnić je od innych konstruktów ..
John
Wierzę, że Larry Wall powiedział kiedyś, że $ przed zmiennymi ułatwiło rozszerzenie Perla bez zerwania istniejącego kodu. Mógł dodać nowe słowa kluczowe, które nie byłyby już używane jako zmienne. Powinien to być ten artykuł , ale znajduje się za zapłatą :-(
SL Barth - Przywróć Monikę
@ johannes Mogę również natychmiast zidentyfikować zmienną w C, nawet bez $, ponieważ zapamiętałem wszystkie kluczowe słowa i funkcje po nawiasie.
JSideris,
1
@ Bizorke C prawdopodobnie ma mniej słów kluczowych (nie je policzył), ale cóż, PHP ma stałe, bez $, chociaż ludzie zwykle używają stałych w UPERCASE. I cóż, gdy na pamięć znasz wszystkie słowa kluczowe itp., Jesteś zaawansowany, dzięki temu wizualnemu wsparciu może być prostsze ... ale wtedy: To kwestia gustu. Moje założenie, że odpowiedź będzie „skopiowana z Perla” i „łatwiejsze do przeanalizowania”, inaczej. decyzja historyczna
Jan
@ johannes Nie powiedziałem, że $ został skopiowany z Perla, powiedziałem, że pochodzi z Perla; PHP oparty jest na Perlu. Tak, to jest preferencja. Nie lubię wpisywać $ za każdym razem iw wielu edytorach $ nie jest zaznaczone po dwukrotnym kliknięciu słowa (spowalnia kopiowanie / wklejanie). Tak, PHP ma nieco więcej słów kluczowych niż C, ale mój argument nadal dotyczy C ++, java itp. Słowa kluczowe są na ogół łatwe do zapamiętania i zwykle są względnie spójne między językami. Ponadto PHP nie jest TYLKO dla początkujących. Programuję w PHP (i wielu innych językach) każdego dnia i mogę powiedzieć, że $ nie zrobiło nic poza spowolnieniem mnie.
JSideris
5

PHP był pierwotnie meta-składnią, która została przeanalizowana i po prostu dynamicznie wywołana w skompilowane funkcje programów c.
W ten sposób możesz myśleć o tym podobnie do programu „powłoki” dla „sieci”…
Nic dziwnego, że zmienne z $ $igns były używane podobnie jak zmienne powłoki.

Kiedy miałem 12 lat i uczyłem się PHP 3 ... jako mojego pierwszego języka programowania - posiadanie $ znacznie ułatwiło życie. Wiedziałem, co to jest zmienna, ale przypomnienie w całym kodzie źródłowym, który przeczytałem, umożliwiło naukę ... nie jestem pewien, czy będę tu dzisiaj, jeśli nie zacznę od PHP.

Oto przykład z -> http://www.php.net/manual/en/history.php.php

<! - dołącz /text/header.html ->

<! - getenv HTTP_USER_AGENT ->
<! - ifsubstr $ exec_result Mozilla ->
  Hej, używasz Netscape! <p>
<! - endif ->

<! - baza danych sql wybierz * z tabeli, w której użytkownik = '$ nazwa użytkownika' ->
<! - ifless $ numentries 1 ->
  Przepraszamy, ten rekord nie istnieje <p>
<! - endif exit ->
  Witamy <! - $ user ->! <p>
  Na twoim koncie pozostało <! - $ index: 0 ->. <p>

<! - obejmują /text/footer.html ->
Ben DeMott
źródło
2
Chociaż nie wątpię, że znak dolara był dla ciebie pomocny, zastanawiam się, czy może to ogólna prostota PHP miała z tym więcej wspólnego. Zacząłem od podstawowego Javascript jako nastolatek i odkryłem, że zmienne są dość łatwe do nauczenia, prawdopodobnie dlatego, że przykłady JavaScript w tamtych czasach były takie proste.
Matt Browne