Sven Rautenberg: eval nicht mit mehrdimensionalen Arrays möglich?

Beitrag lesen

Moin!

Zum ursprünglichen Problem: Wenn "...$var[foo][bar]..." als Ergebnis "...Array[bar]..." liefert, so ist nur $var[foo] als Variable erkannt worden. Man kann geschweifte Klammern um die Variablen legen, wenn PHP sie nicht eindeutig in einem ""-String erkennt, also "...{$var[foo][bar]}...".

Es ist falsch, einfach nur geschweifte Klammern drumherum zu machen. Denn die Variante ohne Klammern erkennt den Array-Index als String, während die Variante mit Klammern den Array-Index als undefinierte Konstante erkennt - und dadurch eine Notice geworfen und ein String mit dem Inhalt des Konstantennamens angenommen wird. Alternativ ist die Konstante schon definiert worden, dann wird deren Inhalt verwendet.

Und da ich (meistens) auf das höre, was mir hier im Forum geraten wird, werde ich es mal ohne eval() probieren. Wobei mir wie gesagt immer noch nicht ganz klar ist, warum man_speziell_in diesem Fall eben nicht eval() verwenden sollte?

eval() sollte niemals verwendet werden, außer man hat tatsächlich einen speziellen Fall, wo man nicht drumherum kommt. Man verwendet es ungern und nur dann, wenn man wirklich nicht drum herum kommt.

So ein Fall ist bei dir einfach nicht gegeben. Du brauchst kein eval(), es macht dein Problem nicht leichter, sondern verschleiert es, reichert es mit Sicherheitsproblemen an, drückt die Performance, macht deinen Code extrem schlecht wartbar etc.

DON'T DO IT. AVOID EVAL()!

- Sven Rautenberg