sourcecode

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

copyscript 2022. 9. 11. 17:29
반응형

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

SO에 대한 첫 번째 질문입니다.이것은 진정한 RTM 후보입니다.하지만 제가 찾아봤지만 찾을 수 없을 것 같아요.#헤드팜은 제가 놓친 간단한 일이라면 기꺼이 하겠습니다.

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

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

멤버 변수로 보이는 것에 액세스하기 위해 사용되는 곱슬괄호 구문은 본 적이 없습니다.와 어떻게 다른가?

$this->_session->user_id

세션은 무관하다고 생각되지만, 그렇지 않을 수도 있기 때문에 질문에 포함시키겠습니다.

곱슬괄호는 복합 변수 이름 user_id를 랩하는 청결 규칙일 뿐입니까?아니면 특별한 접근자 같은 건가요?

TFM에 대한 어떤 포인터라도 제가 R업할 수 있게 해주시면 감사하겠습니다.

대단히 고맙습니다.살살 해 주세요.

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

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 }"} 

이 예에서는 실제 차이는 없습니다.IMO는$this->_session->user_id더 선명하기 때문에 사용해야 합니다.

곱슬괄호 구문이 실제로 좋은 것은 멤버 변수의 이름에 대한 식을 구성함으로써 멤버 변수에 액세스하는 것입니다.$this->_session->{'user_id' . $index}.

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

object->{'name_of_member'};

object->name_of_member;

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

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

반응형