2012-11-30 15 views
17

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(); 
+2

To jest nazwa dynamiczna. Więcej http://stackoverflow.com/questions/9257505/dynamic-variable-names-php –

Odpowiedz

40

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

1

Są one stosowane do zawijania nazwy zmiennych zmiennych.

1

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 
}