source

PHP는 T_PAAMAYIM_NEKUDOTAYIM을 기대합니까?

manysource 2022. 12. 13. 20:10

PHP는 T_PAAMAYIM_NEKUDOTAYIM을 기대합니까?

누구 가지고 있는 사람?T_PAAMAYIM_NEKUDOTAYIM?

이중 콜론 연산자입니다(파서 토큰 목록 참조).

히브리어로 '이중대장'이란 뜻이죠

의 이름입니다.::연산자를 지정합니다.말 그대로 '이중대장'이라는 뜻이에요.어떤 이유에서인지 그들은 그것을 히브리어로 명명했다.코드 구문을 확인하고,::적절한 경우:-)

Wikipedia에서:

In PHP, the scope resolution operator is also called Paamayim Nekudotayim (Hebrew: פעמיים נקודתיים‎), which means “double colon” in Hebrew.

Paamayim Nekudotayim이라는 이름은 PHP 3에서 사용되는 이스라엘 개발 Zend Engine 0.5에 도입되었습니다.히브리어를 할 줄 모르는 많은 개발자들에게는 혼란스러웠지만 다음 오류 메시지 예시와 같이 여전히 PHP 5에서 사용되고 있습니다.

$php - r :: 구문 오류: 구문 오류, 예기치 않은 T_PAAMAYIM_NEKUDOTAYIM

PHP 5.4 현재 스코프 해결 연산자와 관련된 오류 메시지에는 여전히 이 이름이 포함되어 있지만 그 의미는 다소 명확합니다.

$php - r :: 구문 오류: 구문 오류, 예기치 않은 ':' (T_PAAMAYIM_NEKUDOTAYIM)

PHP 공식 문서:

Scope Resolution Operator(Paamayim Nekudotayim이라고도 함) 또는 간단히 말하면 이중 콜론은 클래스의 정적, 상수 및 재정의된 속성 또는 메서드에 액세스할 수 있는 토큰입니다.

클래스 정의 외부에서 이러한 항목을 참조할 때는 클래스 이름을 사용합니다.

PHP 5.3.0에서는 변수를 사용하여 클래스를 참조할 수 있습니다.변수 값은 키워드(예: self, parent, static)가 될 수 없습니다.

Paamayim Nekudotayim은 처음에는 더블콜론의 이름을 짓기엔 이상한 선택처럼 보일 것이다.그러나 Zend Engine 0.5(PHP 3의 파워)를 작성하면서 Zend 팀은 그렇게 부르기로 결정했다.그것은 사실 히브리어로 더블콜론을 의미해요!

나는 히브리어를 꽤 잘 알고 있기 때문에, 「파마임 네쿠도타임」의 이름을 명확하게 하기 위해서, 바꾸어 말하면 「이중 대장」이지만, 문자 그대로 번역됩니다.

  • "파마임"은 "두 개" 또는 "두 번"을 의미한다.
  • 은 '을 뜻한다.네쿠도타임'은 '점'(점등)을 뜻한다.'마음껏'
    • 히브리어로 네쿠다는 점을 의미한다.
    • 복수형은 nekudot, 즉 점으로, 모음으로 기능한다.
    • '네쿠도타임'이라고 하는 것은 접미사 '-ayim'이 '둘' 또는 '둘'을 의미하기 때문입니다.::는 "두 번, 두 개의 점" 또는 일반적으로 스코프 분해능 연산자로 알려져 있음을 나타냅니다.

이것은 PHP의 상수를 empty() 함수에 적용할 때도 발생합니다.

if (!empty(SOME_CONSTANT)) {

}

그건 내 경우였어.이걸 이용해서 해결했어요.

$string = SOME_CONSTANT;
if (!empty($string)) {

}

편집: 안타깝게도 PHP 8.0에서는 "No, no no no"가 아닙니다. RFC는 기대했던 대로 받아들여지지 않아 변경을 제안하고 있습니다.T_PAAMAYIM_NEKUDOTAYIM로로 합니다.T_DOUBLE_COLON; 하지만 거절당했다.

주의: 이 답변은 역사적 목적을 위해 보관합니다.사실 RFC의 작성과 투표율 때문에 이 답변을 작성하게 되었습니다.또, 가까운 장래에 받아 들여지기를 바라고 있습니다.

이 문제는 다음 기능을 사용할 때 Forach에서 발생할 수 있습니다.

foreach( $array as $key = $value )

대신

foreach( $array as $key => $value )

나에게 이것은 수업의 함수 안에서 일어났다.

5.3 에서는 PHP 5.3 이상$this::$defaults이치노어떤 이유로든 낮은 버전 번호를 가진 서버에 코드를 스왑하면 이 에러가 발생합니다.

에는 키워드를 이었습니다.self$this:

self::$defaults정상적으로 동작합니다.

큰따옴표를 사용한 문자열 과제에서 이런 일이 일어났습니다.POST 변수에서 닫힘 컬리가 누락되었습니다...

"for {$_POST['txtName'] on $date";

그랬어야 했다

"for {$_POST['txtName']} on $date";

이유는 설명할 수 없어요.즉, 코드를 해독할 수 있는 오류는 알 수 있지만 왜 클래스 오류를 참조하는지 알 수 없습니다.

잘못 입력했습니다.($array as $key as $value)는 첫 PHP를 했습니다.as.

언급URL : https://stackoverflow.com/questions/592322/php-expects-t-paamayim-nekudotayim