2012-11-30 3 views
17

나는 이것을 코드에서 발견했는데, 그것은 무엇을 의미하며, 정상적인 $ dir 변수와의 차이점은 무엇인가?{}는 무엇을 의미합니까?

global ${$dir}; 

$this->{$dir} = new $class(); 
+2

이것은 동적 이름입니다. 기타 http://stackoverflow.com/questions/9257505/dynamic-variable-names-php –

답변

40

복잡한 곱슬 구문이라고합니다.

문자열 표현으로 스칼라 변수, 배열 요소 또는 객체 속성

이 구문을 통해 포함 할 수있다. 표현식을 문자열 외부에 나타나는 것과 같은 방식으로 작성하고 을 {및}로 묶습니다. {는 이스케이프 할 수 없기 때문에이 구문은 이 $가 {다음에 오는 경우에만 인식됩니다. {\ $ ~ 을 사용하여 리터럴 {$.

상세 정보 :

http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex

1

그들은 변수 변수의 이름을 포장하는 데 사용됩니다.

1

동적으로 생성 된 변수입니다. 예 :

$app = new App(); 
$app->someMethod('MyDB'); 

// global 
$config = array('user' => 'mark', 'pass' => '*****'); 

class App { 

    // MyDB instance 
    protected $config; 

    public function someMethod($class) { 

     $dir = 'config'; 

     // $config = array('user' => 'mark', 'pass' => '*****') 
     global ${$dir}; 
     // not static variable !!! 
     $this->{$dir} = new $class(); 
    } 
} 

class MyDB { 
    // body 
}