멤버 변수에 대한 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
'sourcecode' 카테고리의 다른 글
PHP에서 여러 생성자를 수행하는 가장 좋은 방법 (0) | 2022.09.11 |
---|---|
컨테이너 재시작 문제, 목장의 Galera MariaDB 스택 (0) | 2022.09.11 |
Lumen: 블레이드 뷰에서 URL 매개 변수를 가져옵니다. (0) | 2022.09.11 |
printf의 h와 hh 수식어의 목적은 무엇입니까? (0) | 2022.09.11 |
폴더 내용을 삭제하려면 어떻게 해야 합니까? (0) | 2022.09.11 |