IT

멤버 변수에 대한 PHP 중괄호 구문

lottoking 2020. 10. 10. 10:26

멤버 변수에 대한 PHP 중괄호 구문


SO에 대한 첫 번째 질문이며 실제 RTM 후보입니다. 그러나 나는 내가 그것을 그것을 약속합니다. 내가 놓친 단순한 일로 밝혀지면 기꺼이 #headpalm을 할 것입니다.

Zend Framework를 알아 내려고 시도하고 다음 구문을 발견했습니다.

$this->_session->{'user_id'}

멤버 변수로 보이는 항목에 액세스하는 데 사용되는 중괄호 구문을 본 적이 없습니다. 어떻게 다른가요?

$this->_session->user_id

나는 _session이 말할 수 있습니다.

중괄호는 복합 변수 이름 user_id를 래핑하려고 시도하는 정리 규칙입니까? 아니면 특별한 접근 자인가요?

내가 R을 할 수 있도록 TFM에 대한 모든 포인터는 겸손하게 감사하겠습니다.

감사합니다. 부드러워주세요.


중괄호는 변수 이름의 끝을 명시 적으로 지정하는 데 사용됩니다. 예를 들면 :

echo "This square is {$square->width}00 centimeters broad."; 

따라서 귀하의 사례는 두 가지 특수 사례의 조합입니다. 중괄호 등을 사용하여 클래스 변수에 액세스 할 수 있습니다.

$class->{'variable_name'} // Same as $class->variable_name
$class->{'variable' . '_name'} // Dynamic values are also allowed

그리고 귀하의 경우에는 중괄호 구문으로 사용하고 있습니다.

PHP 매뉴얼 "복잡한 (곱슬) 구문"을 참조하십시오 .


변수 변수를 사용할 때 구문을 알고 있습니다 .

$userProp = 'id';
$this->_session->{'user_'.$userProp};

이 구문의 큰 장점은 일반적으로 많은 영역에 있고 아마도 피하고 싶을 것입니다.

언어는 허용되지 않는 변수 이름에 문자를 사용할 수 있습니다.

즉 :

$this->object->{"hello world\0\n"} 
$this->object->{"function(){   this is a truely awful  name for a variable }"} 

질문의 두 가지 예는 동일한 작업을 수행합니다. PHP를 사용하면 여러 가지 방법으로 멤버 데이터 / 메소드에 액세스 할 수 있습니다.

object->{'name_of_member'};

object->name_of_member;

$member = 'name_of_member';
object->$member;

귀하가 제공하는 예에서는 실제 차이가 $this->_session->user_id더 명확하기 때문에 IMO를 더 명확하게 합니다.

중괄호 구문이 유용한 방법 이름에 대한 유용한 구성하여 멤버 변수에 액세스하는 것 $this->_session->{'user_id' . $index}입니다.

참고 URL : https://stackoverflow.com/questions/1147937/php-curly-brace-syntax-for-member-variable