Znalazłem to w kodzie, co to znaczy i jaka jest różnica między tą a normalną zmienną $ dir?Co znaczy {}?
global ${$dir};
$this->{$dir} = new $class();
Znalazłem to w kodzie, co to znaczy i jaka jest różnica między tą a normalną zmienną $ dir?Co znaczy {}?
global ${$dir};
$this->{$dir} = new $class();
Nazywa się złożoną kędzierzawą składnię.
Dowolna zmienna skalarna, element tablicy lub właściwość obiektu z ciągiem reprezentacja może być zawarta za pośrednictwem tej składni. Po prostu napisz wyrażenie w ten sam sposób, w jaki pojawi się on poza ciągiem, a następnie , a następnie zawiń go w {i}. Ponieważ {nie da się uciec, ta składnia będzie rozpoznawana tylko wtedy, gdy $ natychmiast podąża za {. Użyj {\ $ do , aby uzyskać dosłowny {$.
Więcej informacji:
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex
To bierze wartość $dir
zmienną i znalezienie zmienną o tej nazwie.
Więc jeśli $dir = 'foo';
, to ${$dir}
jest taki sam jak $foo
.
Podobnie, jeśli $dir = 'foo';
, to $this->{$dir}
jest takie samo jak $this->foo
.
http://www.php.net/manual/en/language.variables.variable.php
Są one stosowane do zawijania nazwy zmiennych zmiennych.
Dynamicznie tworzona zmienna. Na przykład:
$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
}
To jest nazwa dynamiczna. Więcej http://stackoverflow.com/questions/9257505/dynamic-variable-names-php –