私はこれをコードで見つけました。それは何を意味し、それと通常の$ dir変数の違いは何ですか?{}は何を意味しますか?
global ${$dir};
$this->{$dir} = new $class();
私はこれをコードで見つけました。それは何を意味し、それと通常の$ dir変数の違いは何ですか?{}は何を意味しますか?
global ${$dir};
$this->{$dir} = new $class();
これは複雑な中括弧構文と呼ばれます。
文字列 のスカラー変数、配列要素またはオブジェクトプロパティは、この構文で含めることができます。 式を文字列の外側に表示されるのと同じ方法で書くだけで、 は{と}で囲みます。 {はエスケープできないので、この構文は は$が{の直後にある場合にのみ認識されます。 {\ $〜 を使用してリテラル{$。
さらに詳しい情報:
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex
それは$dir
変数の値を取り、その名前の変数を見つけることです。
$dir = 'foo';
の場合、${$dir}
は$foo
と同じです。
同様に、$dir = 'foo';
の場合、$this->{$dir}
は$this->foo
と同じです。
http://www.php.net/manual/en/language.variables.variable.php
彼らは、変数、変数の名前をラップするために使用されています。
動的に作成された変数。例:
$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
}
これは動的な名前です。その他http://stackoverflow.com/questions/9257505/dynamic-variable-names-php –