Почему переменным PHP должен предшествовать знак доллара?


13

Я понимаю, что всем переменным PHP должен предшествовать знак доллара (например $someValue = 1), но почему это так? Почему был сделан этот дизайн?

Я спрашиваю, почему моя девушка спросила, почему, когда я упомянул, что переменные PHP должны начинаться со знака доллара, я понял, что понятия не имею, почему был сделан этот синтаксический выбор.

Есть идеи?


11
Потому что создатель PHP не знал, как написать парсер. Таким образом, костыль был необходим для идентификации идентификаторов.
ThomasX

@ThomasX - Хаха, ты, наверное, прав ... Я тоже не фанат базы кода C (yikes)
Бен ДеМотт

Я думаю, что только тот, кто создал PHP, может ответить на этот вопрос.
kiamlaluno

1
Я предполагаю, что это поощрение разработчика ... каждый раз, когда вы ставите знак $, вы приближаетесь к своему платежу!
Камил Климек

Я был бы счастлив, если бы мне не приходилось использовать $this->перед каждой переменной и функцией класса.
Хлоя

Ответы:


8

Ну, я действительно не большой поклонник $$$ (меня не волнует, сколько стоит переменная). Но это происходит от Perl.

Интерпретируемые языки сценариев, такие как perl или php, используют $ для быстрой идентификации и анализа переменных. Это просто оптимизация для переводчика. Но определенно не оптимизация для программиста!


Как это не оптимизация для программиста? - Я могу сразу определить переменные и отличить их от других конструкций ..
Иоганнес

Я полагаю, однажды Ларри Уолл сказал, что $ перед переменными облегчает расширение Perl, не нарушая существующий код. Он может добавить новые ключевые слова, которые еще не будут использоваться в качестве переменных. Это должна быть эта статья , но она за платным экраном :-(
SL Barth - Восстановить Монику

@johannes Я также могу сразу определить переменную в C даже без $, потому что я запомнил все ключевые слова и функции после них в скобках.
JSideris

1
@Bizorke C, вероятно, имеет меньше ключевых слов (не считал их), но в PHP есть константы без $, хотя люди обычно используют константы в UPERCASE. И хорошо, как только вы знаете все ключевые слова и т. Д. Наизусть, вы продвинуты, с этой визуальной помощью вам будет проще ... но потом: это вопрос вкуса. Мое предположение об ответе будет «скопировано из Perl» и «проще для анализа», иначе. историческое решение
Иоганнес

@johannes Я не говорил, что $ был скопирован из Perl, я сказал, что он из Perl; PHP основан на Perl. Да, это предпочтение. Мне не нравится вводить $ каждый раз, и во многих редакторах $ не выбирается при двойном щелчке по слову (замедляет копирование / вставку). Да, в PHP немного больше ключевых слов, чем в C, но мой аргумент по-прежнему применим к C ++, java и т. Д. Ключевые слова, как правило, легко запоминаются и обычно относительно согласованы между языками. Кроме того, PHP не просто для начинающих. Я программирую на PHP (и многих других языках) каждый день, и я могу сказать вам, что $ ничего не сделал, но замедлил меня.
JSideris

5

Изначально PHP был метасинтаксисом, который анализировался и просто динамически вызывался в скомпилированные функции c-программ.
Таким образом, вы можете думать об этом, как о программе «shell» для «сети» ...
Неудивительно, что переменные с символами $ dollars использовались аналогично переменным оболочки.

Когда мне было всего 12 лет, и я изучал PHP 3 ... как свой первый язык программирования - благодаря $ стало намного проще. Я знал, что такое переменная, но наличие напоминания во всем исходном коде, которое я прочитал, сделало обучение возможным ... не уверен, что я был бы здесь сегодня, если бы я не начинал на PHP.

Вот пример из -> http://www.php.net/manual/en/history.php.php

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

<! - getenv HTTP_USER_AGENT ->
<! - ifsubstr $ exec_result Mozilla ->
  Эй, вы используете Netscape! <P>
<! - ENDIF ->

<! - Выбор базы данных sql * из таблицы, где user = '$ username' ->
<! - ifless $ numentries 1 ->
  Извините, эта запись не существует <p>
<! - endif выход ->
  Добро пожаловать <! - $ пользователь ->! <P>
  В вашем аккаунте осталось <! - $ index: 0 -> кредитов. <P>

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

2
Хотя я не сомневаюсь, что знак доллара был вам полезен, мне интересно, может быть, это была общая простота PHP, которая имела к нему большее отношение. Я начал с базового Javascript в подростковом возрасте и нашел переменные, которые довольно легко выучить, вероятно потому, что примеры Javascript в те дни были очень просты.
Мэтт Браун
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.