Чому змінним PHP потрібно передувати знаку долара?


13

Я розумію, що всім змінним PHP потрібно передувати знаку долара (наприклад $someValue = 1), але чому це так? Чому був зроблений такий вибір дизайну?

Причина, яку я запитую, - це моя дівчина запитала, чому, коли я згадав, що змінні PHP потрібно починати зі знака долара, і я зрозумів, що не маю поняття, чому цей синтаксичний вибір був зроблений.

Будь-які ідеї?


11
Оскільки творець PHP не знав, як написати парсер. Отже, милиця була потрібна для виявлення ідентифікаторів.
ThomasX

@ThomasX - Ха-ха, ти, мабуть, маєш рацію ... Я також не шанувальник базової коди С (поступається)
Бен ДеМотт

Я думаю, що лише хто створив PHP, може відповісти на це питання.
kiamlaluno

1
Я здогадуюсь, що це заохочувати розробника ... щоразу, коли ви ставите знак $, ви ближче до вашої оплати!
Каміль Климек

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

Відповіді:


8

Добре, що я теж не великий фанат $$$ (мені не дуже важливо, скільки коштувала змінна). Але це походить від perl.

Інтерпретовані мови сценаріїв, такі як perl або php, використовують $ для швидкого визначення та розбору змінних. Це просто оптимізація для перекладача. Але точно не оптимізація для програміста!


Як це не оптимізація для програміста? - Я можу відразу визначити змінні та відрізнити їх від інших конструкцій ..
johannes

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

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

1
@Bizorke C, ймовірно, має менше ключових слів (не рахував їх), але добре, PHP має константи, не маючи $, навіть якщо люди зазвичай використовують константи в UPERCASE. І добре, коли ви знаєте всі ключові слова тощо напам’ять, ви просунулися, потрапляння туди може бути простішим за допомогою цієї візуальної допомоги ... але тоді: Це питання смаку. Моє припущення для відповіді було б "скопійовано з Perl" і "простіше для розбору". історичне рішення
johannes

@johannes Я не сказав, що $ було скопійовано з perl, я сказав, що він походить від Perl; PHP заснований на Perl. Так, це перевага. Мені не подобається вводити $ кожен раз, і в багатьох редакторах $ не вибирається, коли ви двічі клацніть слово (уповільнює копіювання / вставлення). Так, PHP має трохи більше ключових слів, ніж C, але мій аргумент все ще стосується C ++, java тощо. Ключові слова, як правило, легко запам'ятовуються і зазвичай відносно узгоджуються між мовами. Крім того, PHP не є СПОСОБНИМ для початківців. Я щодня програмую на PHP (та багатьох інших мовах), і можу сказати вам, що $ нічого не зробило, окрім як сповільнити мене.
JSideris

5

PHP спочатку був метасинтаксисом, який був розібраний і просто динамічно викликаний в компільовані функції c-програм.
Таким чином, ви можете подумати про це як програму "оболонки" для "Інтернету" ...
Не дивно, що змінні з доларовими знаками використовувались аналогічно змінним оболонок.

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

Ось приклад із -> http://www.php.net/manual/en/history.php.php

<! - включити /text/header.html ->

<! - getenv HTTP_USER_AGENT ->
<! - ifsubstr $ exec_result Mozilla ->
  Гей, ви використовуєте Netscape! <p>
<! - endif ->

<! - sql виберіть базу даних * з таблиці, де user = '$ username' ->
<! - якщо немає $ numerries 1 ->
  На жаль, цього запису не існує <p>
<! - закінчення виходу ->
  Ласкаво просимо <! - $ user ->! <p>
  У вашому обліковому записі залишилось <! - $ index: 0 -> кредитів. <p>

<! - включити /text/footer.html ->

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