Perché le variabili PHP devono essere precedute da un segno di dollaro?


13

Comprendo che tutte le variabili PHP devono essere precedute da un segno di dollaro (ad esempio $someValue = 1), ma perché è così? Perché è stata fatta questa scelta progettuale?

Il motivo per cui lo chiedo è che la mia ragazza mi ha chiesto perché quando ho detto che le variabili PHP devono iniziare con un segno di dollaro, e ho capito che non avevo idea del perché questa scelta sintattica fosse stata fatta.

Qualche idea?


11
Perché il creatore di PHP non sapeva come scrivere un parser. Quindi era necessaria una stampella per identificare gli identificatori.
ThomasX,

@ThomasX - Haha, probabilmente hai ragione ... Non sono neanche un fan della base di codice C (yikes)
Ben DeMott,

Penso che solo chi ha creato PHP può rispondere a questa domanda.
Kiamlaluno,

1
Immagino che sia per incoraggiare lo sviluppatore ... ogni volta che metti $ sign sei più vicino al tuo pagamento!
Kamil Klimek,

Sarei felice se non dovessi usare $this->davanti a ogni variabile di classe e funzione.
Chloe,

Risposte:


8

Beh, non sono nemmeno un grande fan dei $$$ (non mi interessa davvero quanto costa la variabile). Ma viene dal perl.

I linguaggi di scripting interpretati come perl o php usano $ per identificare e analizzare rapidamente le variabili. È solo un'ottimizzazione per l'interprete. Ma sicuramente non è un'ottimizzazione per il programmatore!


In che modo non è un'ottimizzazione per un programmatore? - Posso immediatamente identificare le variabili e distinguerle dagli altri costrutti.
Johannes,

Credo che Larry Wall abbia detto una volta che $ davanti alle variabili ha reso più semplice estendere Perl senza rompere il codice esistente. Poteva aggiungere nuove parole chiave che non sarebbero già state utilizzate come variabili. Dovrebbe essere questo articolo , ma è dietro un paywall :-(
SL Barth - Ripristina Monica il

@johannes Posso anche identificare immediatamente una variabile in C anche senza $ perché ho memorizzato tutte le parole chiave e le funzioni tra parentesi dopo di esse.
JSideris,

1
@Bizorke C ha probabilmente meno parole chiave (non le ha contate) ma beh, PHP ha costanti, senza $, anche se le persone di solito usano costanti in MAIUSCOLO. E bene, una volta che conosci tutte le parole chiave ecc. A memoria, sei avanzato, arrivarci potrebbe essere più semplice con questa assistenza visiva ... ma poi: questa è una questione di gusti. Il mio presupposto per una risposta sarebbe "copiato da Perl" e "più semplice da analizzare" aka. decisione storica
johannes

@johannes Non ho detto che $ è stato copiato da Perl, ho detto che viene da Perl; PHP si basa su Perl. Sì è una preferenza. Non mi piace digitare $ ogni volta e in molti editor $ non viene selezionato quando si fa doppio clic sulla parola (rallenta copia / incolla). Sì, PHP ha leggermente più parole chiave rispetto a C, ma il mio argomento si applica ancora a C ++, java, ecc. Le parole chiave sono generalmente facili da memorizzare e di solito sono relativamente coerenti tra le lingue. Inoltre, PHP non è SOLO per i principianti. Programma in PHP (e molte altre lingue) ogni giorno e posso dirti che $ non ha fatto altro che rallentarmi.
JSideris,

5

PHP era originariamente una meta-sintassi che veniva analizzata e semplicemente chiamata dinamicamente in funzioni compilate di programmi c.
In questo modo puoi pensarlo simile a un programma "shell" per il "web" ...
Non c'è da meravigliarsi che le variabili con $ dollarigns siano state usate in modo simile alle variabili shell.

Quando avevo 12 anni e stavo imparando PHP 3 ... come il mio primo linguaggio di programmazione - avere $ reso la vita molto più semplice. Sapevo che cosa fosse una variabile, ma avere un promemoria in tutto il codice sorgente che ho letto ha reso possibile l'apprendimento ... non sono sicuro che sarei qui oggi se non avessi iniziato su PHP.

Ecco un esempio da -> http://www.php.net/manual/en/history.php.php

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

<! - getenv HTTP_USER_AGENT ->
<! - ifsubstr $ exec_result Mozilla ->
  Ehi, stai usando Netscape! <p>
<! - endif ->

<! - database sql seleziona * dalla tabella dove user = '$ username' ->
<! - ifless $ numentries 1 ->
  Spiacenti, quel record non esiste <p>
<! - endif exit ->
  Benvenuto <! - $ user ->! <p>
  Hai <! - $ index: 0 -> crediti nel tuo account. <p>

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

2
Anche se non dubito che il simbolo del dollaro ti sia stato utile, mi chiedo se forse era la semplicità generale di PHP che aveva più a che fare con esso. Ho iniziato con Javascript di base da adolescente e ho trovato le variabili abbastanza facili da imparare, probabilmente perché gli esempi di Javascript a quei tempi erano così semplici.
Matt Browne,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.