2014-01-13 3 views
0

예 개체 :변수를 사용하여 2 단계 객체에 액세스하는 방법은 무엇입니까?

$var = 'obj1'; 
$this->{$var} 

그러나 나는 더 가고 싶어 :

$this->obj1->lvl1 
$this->obj1->lvl1->lvl2 

나는이 같은 개체에 액세스 할 수 있습니다 알고 있습니다. 문제는 그것이 동적이어서 문자열에서 문자열 이름을 가져와야한다는 것입니다. 나는 이것을 매핑에 사용하고있다. 따라서 사용자는 점 표기법을 사용하여 객체의 모든 항목에 액세스 할 수 있습니다. 사용자가이 표기법을 사용한다면 :

'obj1.lvl1' 
'obj.lvl1.lvl2' 

을 그래서 내가해야 할 일은 다음과 같습니다

$this->obj1->{$mapped_string} 

그래서 $mapped_string 한 단계 또는 깊은 두 개 이상의 수준 중 하나를 갈 수 있습니다.

개체에 직접 매핑됩니다. 아무도 내가 이것을 어떻게 할 수 있는지 안다?

답변

2

문자열을 접근 자로 분할 한 다음 루프로 드릴 다운합니다. 이는 접근 자의 길이에 관계없이 적용됩니다.

$obj = $this; 
$accessors = explode('.', $mapped_string); 
foreach ($accessors as $acc) { 
    $obj = $obj->{$acc}; 
} 
var_dump($obj); 
+0

:-) – user962449

관련 문제