2012-11-30 10 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 
}