Por que as variáveis ​​PHP precisam ser precedidas com um cifrão?

13

Entendo que todas as variáveis ​​PHP precisam ser precedidas por um cifrão (por exemplo $someValue = 1), mas por que é esse o caso? Por que essa escolha de design foi feita?

O motivo pelo qual pergunto é que minha namorada perguntou por que, quando mencionei que as variáveis ​​PHP precisam começar com um cifrão, e percebi que não tinha idéia do porquê dessa escolha sintática.

Alguma ideia?

Ivan
fonte
11
Porque o criador do PHP não sabia como escrever um analisador. Portanto, era necessária uma muleta para identificar identificadores.
ThomasX
@ThomasX - Haha, você provavelmente está certo ... Eu também não sou fã da base de código C (caramba)
Ben DeMott
Eu acho que apenas quem criou o PHP pode responder a essa pergunta.
kiamlaluno
1
Eu acho que é para incentivar o desenvolvedor ... toda vez que você coloca $ sinal, você está mais perto do seu pagamento!
Kamil Klimek
Ficaria feliz se não tivesse que usar $this->na frente de todas as variáveis ​​e funções da classe.
Chloe

Respostas:

8

Bem, eu também não sou muito fã do $$$ (eu realmente não me importo quanto custou a variável). Mas vem do perl.

Linguagens de script interpretadas como perl ou php usam o $ para identificar e analisar rapidamente variáveis. É apenas uma otimização para o intérprete. Mas definitivamente não é uma otimização para o programador!

JSideris
fonte
Como isso não é uma otimização para um programador? - Eu posso identificar imediatamente variáveis e distingui-las de outras construções ..
Johannes
Acredito que Larry Wall disse uma vez que o $ na frente de variáveis ​​tornou mais fácil estender o Perl sem quebrar o código existente. Ele poderia adicionar novas palavras-chave que ainda não seriam usadas como variáveis. Deveria ser este artigo , mas está por trás de um paywall :-(
SL Barth - Reinstate Monica
@johannes Também posso identificar imediatamente uma variável em C, mesmo sem o $, porque memorizei todas as palavras-chave e funções entre parênteses.
precisa
1
O @Bizorke C provavelmente tem menos palavras-chave (não as contou), mas o PHP tem constantes, sem $, mesmo que as pessoas usem constantes no UPERCASE. E bem, depois de conhecer todas as palavras-chave, etc., você é avançado, chegar lá pode ser mais simples com essa assistência visual ... mas então: Essa é uma questão de gosto. Minha suposição para uma resposta seria "copiada do Perl" e "mais simples de analisar" aka. decisão histórica
johannes
@johannes Eu não disse que o $ foi copiado do perl, eu disse que ele veio do Perl; PHP é baseado em Perl. Sim, é preferência. Não gosto de digitar o $ toda vez e, em muitos editores, o $ não é selecionado quando você clica duas vezes na palavra (diminui a velocidade de copiar / colar). Sim, o PHP tem um pouco mais de palavras-chave que C, mas meu argumento ainda se aplica a C ++, java etc. As palavras-chave geralmente são fáceis de memorizar e geralmente são relativamente consistentes entre os idiomas. Além disso, o PHP não é APENAS para iniciantes. Eu programo em PHP (e em muitas outras linguagens) todos os dias e posso dizer que o $ não fez nada além de me atrasar.
JSideris
5

O PHP era originalmente uma meta-sintaxe que foi analisada e simplesmente chamada dinamicamente em funções de programas-c compiladas.
Dessa forma, você pode pensar nisso como um programa "shell" para a "web" ...
Não é de admirar que variáveis ​​com $ dollarigns tenham sido usadas de maneira semelhante às variáveis ​​do shell.

Quando eu tinha 12 anos e estava aprendendo PHP 3 ... como minha primeira linguagem de programação - ter o $ tornou a vida muito mais fácil. Eu sabia o que era uma variável, mas ter um lembrete em todo o código-fonte que li tornava possível o aprendizado ... não tenho certeza de que estaria aqui hoje se não iniciasse o PHP.

Aqui está um exemplo de -> http://www.php.net/manual/en/history.php.php

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

<! - getenv HTTP_USER_AGENT ->
<! - ifsubstr $ exec_result Mozilla ->
  Ei, você está usando o Netscape! <p>
<! - endif ->

<! - sql database selecione * da tabela em que user = '$ username' ->
<! - ifless $ numentries 1 ->
  Desculpe, esse registro não existe <p>
<! - endif exit ->
  Bem-vindo <! - $ user ->! <p>
  Você tem <! - $ index: 0 -> créditos restantes em sua conta. <p>

<! - include /text/footer.html ->
Ben DeMott
fonte
2
Embora eu não duvide que o cifrão tenha sido útil para você, pergunto-me se talvez fosse a simplicidade geral do PHP que tivesse mais a ver com isso. Comecei com o Javascript básico quando adolescente e encontrei variáveis ​​muito fáceis de aprender, provavelmente porque os exemplos de Javascript da época eram muito simples.
precisa