2012-11-30 26 views
17

Ich fand dies im Code, was bedeutet das und was ist der Unterschied zwischen dieser und normalen $ dir-Variable?Was bedeutet {}?

global ${$dir}; 

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

Dies ist ein dynamischer Name. Mehr http://stackoverflow.com/questions/9257505/dynamic-variable-names-php –

Antwort

40

Es heißt komplexe lockige Syntax.

Jede skalare Variable, Array-Element oder Objekteigenschaft mit einer Zeichenfolge Darstellung kann über diese Syntax enthalten sein. Schreiben Sie einfach den Ausdruck auf die gleiche Weise, wie er außerhalb der Zeichenfolge angezeigt wird, und , dann wickeln Sie ihn in {und}. Da {nicht maskierbar ist, wird diese Syntax nur dann erkannt, wenn $ direkt auf {folgt. Verwenden Sie {\ $ bis erhalten Sie ein Literal {$.

Weitere Informationen:

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

1

Sie werden verwendet, um den Namen der Variablen Variablen zu wickeln.

1

Eine dynamisch erstellte Variable. Zum Beispiel:

$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 
}