Почему переменным 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.