allererst $this->{$var}
und $this->var
sind zwei sehr verschiedene Dinge. Letzterer fordert die Klassenvariable var
an, während der andere den Namen der in der Zeichenfolge $var
enthaltenen Variablen anfordert. Wenn $var
der String ist, wird es $this->foo
und so weiter anfordern.
Dies ist nützlich für dynamische Programmierung (wenn Sie den Namen der Variablen nur zur Laufzeit kennen). Aber die klassische {}
Notation in einem String-Kontext ist vor allem sehr mächtig, wenn Sie seltsame Variablennamen haben:
${'y - x'} = 'Ok';
$var = 'y - x';
echo ${$var};
druckt Ok
auch wenn der Variablenname y - x
wegen der Räume nicht gültig ist und der -
Charakter.
hmm '$ objekt-> attr' =' $ objekt -> {"attr"} ':) –
@DaveChen aktualisierte meine Antwort auch mit diesem Beispiel – jszobody
Ich erinnere mich, als ich anfing, versuchte ich etwas wie' $ this -> $ val' und scheiterte kläglich. Schön diese Antwort zu sehen. –