Pourquoi les variables PHP doivent-elles être précédées d'un signe dollar?

13

Je comprends que toutes les variables PHP doivent être précédées d'un signe dollar (par exemple $someValue = 1), mais pourquoi est-ce le cas? Pourquoi ce choix de conception a-t-il été fait?

La raison pour laquelle je pose la question est que ma petite amie m'a demandé pourquoi lorsque j'ai mentionné que les variables PHP devaient commencer par un signe dollar, et j'ai réalisé que je n'avais aucune idée de la raison pour laquelle ce choix syntaxique avait été fait.

Des idées?

Ivan
la source
11
Parce que le créateur de PHP ne savait pas comment écrire un analyseur. Il fallait donc une béquille pour identifier les identifiants.
ThomasX
@ThomasX - Haha vous avez probablement raison ... Je ne suis pas non plus fan de la base de code C (yikes)
Ben DeMott
Je pense que seul celui qui a créé PHP peut répondre à cette question.
kiamlaluno
1
Je pense que c'est pour encourager le développeur ... à chaque fois que vous mettez $ signe, vous êtes plus proche de votre paiement!
Kamil Klimek
Je serais heureux si je n'avais pas à utiliser $this->devant chaque variable et fonction de classe.
Chloe

Réponses:

8

Eh bien, je ne suis pas non plus un grand fan des $$$ (je ne me soucie pas vraiment du coût de la variable). Mais cela vient de Perl.

Les langages de script interprétés comme perl ou php utilisent le $ pour identifier et analyser rapidement les variables. C'est juste une optimisation pour l'interprète. Mais certainement pas une optimisation pour le programmeur!

JSideris
la source
Comment n'est-ce pas une optimisation pour un programmeur? - Je peux immédiatement identifier les variables et les distinguer des autres constructions ..
johannes
Je crois que Larry Wall a dit un jour que le $ devant les variables facilitait l'extension de Perl sans casser le code existant. Il pourrait ajouter de nouveaux mots clés qui ne seraient pas déjà utilisés comme variables. Cela devrait être cet article , mais il est derrière un mur payant :-(
SL Barth - Réintégrer Monica
@johannes Je peux également identifier immédiatement une variable en C même sans $ car j'ai mémorisé tous les mots clés et les fonctions entre parenthèses.
JSideris
1
@Bizorke C a probablement moins de mots-clés (ne les a pas comptés) mais bon, PHP a des constantes, sans $, même si les gens utilisent généralement des constantes en UPERCASE. Et bien, une fois que vous connaissez tous les mots clés, etc. par cœur, vous êtes avancé, y arriver pourrait être plus simple avec cette assistance visuelle ... mais alors: C'est une question de goût. Mon hypothèse pour une réponse serait "copiée de Perl" et "plus simple à analyser" aka. décision historique
johannes
@johannes Je n'ai pas dit que le $ avait été copié depuis perl, j'ai dit qu'il venait de Perl; PHP est basé sur Perl. Oui, c'est la préférence. Je n'aime pas taper le $ à chaque fois et dans de nombreux éditeurs, $ n'est pas sélectionné lorsque vous double-cliquez sur le mot (ralentit le copier / coller). Oui, PHP a un peu plus de mots clés que C, mais mon argument s'applique toujours à C ++, java, etc. Les mots clés sont généralement faciles à mémoriser et sont généralement relativement cohérents entre les langages. De plus, PHP n'est pas JUSTE pour les débutants. Je programme en PHP (et dans de nombreux autres langages) tous les jours, et je peux vous dire que le $ n'a fait que ralentir.
JSideris
5

PHP était à l'origine une méta-syntaxe qui a été analysée et simplement appelée dynamiquement dans une fonction compilée de programmes c.
De cette façon, vous pouvez le penser comme un programme "shell" pour le "web" ...
Il n'est pas étonnant que les variables avec $ dollarsigns aient été utilisées de la même manière que les variables shell.

Quand j'avais 12 ans, et j'apprenais PHP 3 ... comme mon premier langage de programmation - avoir le $ rendait la vie tellement plus facile. Je savais ce qu'était une variable, mais avoir un rappel dans tout le code source que j'ai lu a rendu l'apprentissage possible ... je ne suis pas sûr d'être ici aujourd'hui si je ne commençais pas sur PHP.

Voici un exemple de -> http://www.php.net/manual/en/history.php.php

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

<! - getenv HTTP_USER_AGENT ->
<! - ifsubstr $ exec_result Mozilla ->
  Hé, vous utilisez Netscape! <p>
<! - endif ->

<! - sql database select * from table where user = '$ username' ->
<! - ifless $ numentries 1 ->
  Désolé, cet enregistrement n'existe pas <p>
<! - sortie endif ->
  Bienvenue <! - $ user ->! <p>
  Il vous reste <! - $ index: 0 -> crédits dans votre compte. <p>

<! - inclure /text/footer.html ->
Ben DeMott
la source
2
Bien que je ne doute pas que le signe dollar vous a été utile, je me demande si c'est peut-être la simplicité globale de PHP qui a plus à voir avec cela. J'ai commencé avec Javascript de base à l'adolescence et j'ai trouvé les variables assez faciles à apprendre, probablement parce que les exemples Javascript à l'époque étaient si simples.
Matt Browne