Hi,
$page = new PAGE() // $page ist ein riesiges Array
$page->{'main'}['sub']['cont'] = 'abc'
>
> Was macht diese Codezeile?
Grundsätzlich braucht man die geschweiften Klammern an Stellen, an denen man auf Eigenschaften/Methoden zugreifen möchte, deren Name keinen in PHP gültigen Bezeichner darstellen.
Das kann z.B. passieren, wenn man sich das Ergebnis einer Datenbank-Abfrage als Objekte liefern lässt. Ein Spaltenname wie "foo bar" lässt sich natürlich nicht über `$obj->foo bar`{:.language-php} ansprechen, das würde der Interpreter nicht verstehen.
Also kann man an solchen Stellen zur geschweifte-Klammern-um-Literal-Schreibweise greifen – `$obj->{'foo bar'}`{:.language-php}
Das ist das generelle Prinzip – nur in deinem Beispiel ist die Verwendung eher sinnfrei, denn `$page->main['sub']['cont'] = 'abc'`{:.language-php} hätte es dort ebenso getan.
Außer einem Literal kann man natürlich auch den Namen einer Variablen angeben, wenn man dynamisch auf eine Eigenschaft/Methode zugreifen möchte. (Dazu braucht man dann aber idR. die geschweiften Klammern nicht, `$obj->{$foo}`{:.language-php} und `$obj->$foo`{:.language-php} wären äquivalent.) Das hat aber einen ähnlichen Unsauberkeitsfaktor wie variable Variablen, deshalb versucht man sowas zu vermeiden.
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?