Geshi und PHP 8
Posted: Sat Apr 01, 2023 6:40 pm
Nach dem Umstieg auf PHP 8 kam es auf Seiten mit formatierten Codeblöcken zur Fehlermeldung
„Warning: Undefined array key "properties" in /…/plugins/serendipity_event_geshi/serendipity_event_geshi.php on line 153“
gefolgt von
„Warning: Trying to access array offset on value of type null in /…/plugins/serendipity_event_geshi/serendipity_event_geshi.php on line 153“.
Anscheinend kommt PHP 8 in Zeile 153 nicht mit dem Ausdruck $eventData['properties']['ep_disable_markup_' . $this->instance] zurecht. Wenn es den Schlüssel „properties“ nicht gibt, schlägt der Zugriff auf den Folgewert natürlich fehl.
Ich habe das jetzt soweit zurechtgefrickelt, dass ich diesen Ausdruck durch eine neue Variable „$edpdm“ ersetzt habe, der ich vor der Fallunterscheidung, in der der Fehler auftritt, den Wert null zuweise, wenn der Schlüssel nicht existiert:
$edpdm = $eventData['properties']['ep_disable_markup_' . $this->instance] ?? null;
Immerhin funktioniert das Plugin jetzt wieder, zeigt Code ordentlich syntaxgehighlightet an und wirft keine Fehler mehr aus. Da ich aber alles andere als ein PHP-Experte bin und nicht wirklich verstanden habe, was in der Zeile eigentlich geschieht, würde ich mich sehr freuen, wenn sich jemand, der davon mehr Ahnung hat, einmal des Plugins annehmen könnte.
„Warning: Undefined array key "properties" in /…/plugins/serendipity_event_geshi/serendipity_event_geshi.php on line 153“
gefolgt von
„Warning: Trying to access array offset on value of type null in /…/plugins/serendipity_event_geshi/serendipity_event_geshi.php on line 153“.
Anscheinend kommt PHP 8 in Zeile 153 nicht mit dem Ausdruck $eventData['properties']['ep_disable_markup_' . $this->instance] zurecht. Wenn es den Schlüssel „properties“ nicht gibt, schlägt der Zugriff auf den Folgewert natürlich fehl.
Ich habe das jetzt soweit zurechtgefrickelt, dass ich diesen Ausdruck durch eine neue Variable „$edpdm“ ersetzt habe, der ich vor der Fallunterscheidung, in der der Fehler auftritt, den Wert null zuweise, wenn der Schlüssel nicht existiert:
$edpdm = $eventData['properties']['ep_disable_markup_' . $this->instance] ?? null;
Immerhin funktioniert das Plugin jetzt wieder, zeigt Code ordentlich syntaxgehighlightet an und wirft keine Fehler mehr aus. Da ich aber alles andere als ein PHP-Experte bin und nicht wirklich verstanden habe, was in der Zeile eigentlich geschieht, würde ich mich sehr freuen, wenn sich jemand, der davon mehr Ahnung hat, einmal des Plugins annehmen könnte.