Rolf B: Regex mal wieder (Parameter in Funktionsaufruf in Anführungszeichen setzen)

Beitrag lesen

Hallo Robert,

wenn Du eine Notice bekommst, solltest Du dringend dein PHP updaten. Das ist nämlich mit PHP 7 zur Warning geworden, und ab PHP 8 zum Error.

define("Moin", "Hallo");
echo Moin Moin;

ist aber auch vor PHP 7 schon ein Syntaxfehler, weil die Konstante einfach 1:1 durch den definierten Wert ersetzt und zu

echo "Hallo" "Hallo";

wird. Es hat ja niemand behauptet, dass echo Moin; sinnvoller Code in PHP gewesen wäre. Damit wird man auch keine Altlasten haben. Das passiert eher bei assoziativen Arrays; ich hatte vor Jahren ein Altprojekt auf PHP, das konsequent $arr[name] statt $arr['name'] verwendete. In Tausenden von Zeilen…

Frust fact: Beim String Parsing ist die Notation ohne Anführungszeichen nach wie vor legal. Aber nur in der simple syntax. Die complex syntax will es mit Anführungszeichen:

$x = [ "foo" => 42 ];
echo "Die Antwort ist $x[foo]";
echo "Die Antwort ist { $x['foo'] }";

Und es ist nicht nur legal, es ist auch noch Pflicht. Beide Echos sind falsch:

$x = [ "foo" => 42 ];
echo "Die Antwort ist $x['foo']";
echo "Die Antwort ist { $x[foo] }";

Rolf

--
sumpsi - posui - obstruxi