2012-08-23 2 views
8

대신PHP 동적 객체 속성의 이름

$object->my_property 

내가 너무 좋아이

$object->"my_".$variable 
+0

명심해야 할 것은 동적 변수를 사용할 수는 있지만 명시 적으로 지정하는 것이 좋습니다. 나중에 리팩토링을 쉽게 만듭니다. "my_cat"이라는 속성을 검색한다고 상상해보십시오. 동적으로 선언 된 경우에는 찾을 수 없습니다. – Revent

답변

23

사용 중괄호 같은 것을하고 싶지 사용 :

$object->{'my_' . $variable} 
6

이 방법에 대해 :

$object->{"my_$variable"}; 

PHP 설명서의 this section이 도움이 될 것으로 생각합니다. 즉, 중괄호 안에 임의의 표현식을 쓸 수 있습니다. 결과 (문자열)는 해결할 속성의 이름이됩니다. 예를 들어 :

$x = new StdClass(); 
$x->s1 = 'def'; 

echo $x->{'s' . print("abc\n")}; 
// prints 
// abc 
// def 

... 아직 일반적으로 (BTW, 의미있는 이름을 부여 할 수 있습니다) 임시 변수로이 식의 결과를 저장하는 데 훨씬 더 많은 읽을 수 있습니다. 이처럼 : 보시다시피

$x = new StdClass(); 
$x->s1 = 'def'; 

$someWeirdPropertyName = 's' . print("abc\n"); // becomes 's1'. 
echo $x->$someWeirdPropertyName; 

,이 방법은 중괄호가 필요하지 차종과 독자 속성 이름을 구성하는 것 중 적어도 일부에 대한 설명을 제공합니다.)

P. print은 변수 이름 표현의 잠재적 인 복잡성을 설명하기 위해 사용되었습니다. 이러한 종류의 코드는 인증 테스트에 일반적으로 사용되지만 프로덕션 환경에서는 이러한 코드를 사용하는 것이 중요합니다.)

+0

고마워, 내가 두번 똑딱 거리면 너는 똑같이 가질 수있을거야. – user1209203