PHP 변수 앞에 달러 기호가 필요한 이유는 무엇입니까?


13

모든 PHP 변수 앞에 달러 기호 (예 :)가 와야한다는 것을 이해합니다 $someValue = 1. 그러나 왜 그런가요? 이 디자인을 선택한 이유는 무엇입니까?

내가 묻는 이유는 내 여자 친구가 PHP 변수가 달러 기호로 시작해야한다고 언급했을 때 왜 그 구문을 선택했는지 알지 못했기 때문입니다.

어떤 아이디어?


11
PHP 작성자는 파서를 작성하는 방법을 몰랐기 때문입니다. 따라서 식별자를 식별하기 위해 목발이 필요했습니다.
ThomasX

@ThomasX - 하하 당신은 바로 ... 나는 C 코드 염기 (싸)의 더 팬 해요 아마
벤 데못

PHP를 만든 사람 만이이 질문에 대답 할 수 있다고 생각합니다.
kiamlaluno

1
개발자를 격려하는 것이 좋습니다. $ 기호를 넣을 때마다 지불에 더 가깝습니다!
Kamil Klimek

$this->모든 클래스 변수와 함수 앞에서 사용할 필요가 없다면 기쁠 것 입니다.
Chloe

답변:


8

글쎄, 나는 정말로 $$$의 열성 팬이 아닙니다 (변수가 얼마나 비싼 지 신경 쓰지 않습니다). 그러나 그것은 펄에서 온다.

perl 또는 php와 같은 해석 된 스크립팅 언어는 $를 사용하여 변수를 빠르게 식별하고 구문 분석합니다. 인터프리터를위한 최적화 일뿐입니다. 그러나 분명히 프로그래머를위한 최적화는 아닙니다!


프로그래머를위한 최적화가 아닌 방법은 무엇입니까? -변수를 즉시 식별하고 다른 구성과 구별 할 수 있습니다.
johannes

Larry Wall은 변수 앞의 $로 기존 코드를 손상시키지 않고 Perl을 쉽게 확장 할 수 있다고 말했다. 아직 변수로 사용되지 않은 새 키워드를 추가 할 수 있습니다. 이 기사 이어야 하지만 페이 월 뒤에 있습니다 :
SL Barth-복원 모니카

@johannes 나는 $가 없어도 C에서 변수를 즉시 식별 할 수 있습니다. 왜냐하면 모든 핵심 단어와 함수 뒤에 괄호가 있으므로 암기했기 때문입니다.
JSideris

1
@Bizorke C는 아마도 키워드가 적을 수도 있지만 (카운트하지 않았 음) 사람들이 일반적으로 UPERCASE에서 상수를 사용하더라도 PHP는 $없이 상수를 가지고 있습니다. 글쎄, 일단 당신이 마음에 의해 모든 키워드를 알고 나면,이 시각적 도움으로 더 간단해질 수 있습니다 ... 그러나 다음은 맛의 문제입니다. 대답에 대한 나의 가정은 "펄에서 복사되고"해석하기 더 간단 할 것이다. 역사적인 결정
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

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

<!-getenv HTTP_USER_AGENT->
<!-ifsubstr $ exec_result Mozilla->
  안녕하세요, Netscape를 사용하고 있습니다! <p>
<!-엔디 프->

<!-sql 데이터베이스 선택 * user = '$ username'-> 표에서
<!-만약 $ numentries 1->
  죄송합니다. 해당 레코드가 없습니다. <p>
<!-엔디 프 종료->
  환영합니다 <!-$ user->! <p>
  귀하의 계정에 <!-$ index : 0-> 크레딧이 남아 있습니다. <p>

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

2
달러 기호가 당신에게 도움이되었다는 것을 의심하지는 않지만, PHP와 관련이있는 PHP의 전반적인 단순성인지 궁금합니다. 나는 십대 시절에 기본 자바 스크립트로 시작했고 변수를 배우기 매우 쉽다는 것을 알았습니다. 아마도 당시의 자바 스크립트 예제가 너무 단순했기 때문일 것입니다.
매트 브라운
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.