frase wrote: ↑Sat Jun 25, 2022 11:16 am
Ob das noch irgendwelche anderen Folgen hat, kann ich (noch) nicht beurteilen.
Das sollte eigentlich keine wirklich unerwünschten Nebenwirkungen haben. Allerdings ist mir nun aufgefallen, dass eine Funktion, die ein Array zurückgibt, auch nicht korrekt behandelt wird. Da kommt es nämlich zu:
WARNING: Array to string conversion
Und im Content-Bereich steht dann "Array". Und wenn die Pluginfunktion etwas gänzlich unerwartetes zurückgibt (z.B. ein Objekt), dann kommt es zu einem fatalen Fehler. Na ja, halbwegs sinnvoll sollte sich eine Pluginfunktion schon verhalten; ich denke wir müssen hier nicht alles berücksichtigen.
Trotzdem ist zu überlegen, ob wir nicht einfach zu String casten, was vielleicht die brauchbarsten Fehlermeldungen erzeugt:
Code: Select all
(string) eval('return ' . $___expression . ';')
Oder wir erwarten von Autoren von Pluginfunktionen, dass diese keinen Unsinn zurückgeben, und berücksichtigen nur NULL explizit (aus Gründen der Kompatibilität mit bestehenden Plugins):
Code: Select all
eval('return ' . $___expression . ';') ?? ''
Das erfordert aber PHP ≥ 7.0.0.
frase wrote: ↑Sat Jun 25, 2022 11:16 am
Ob hier ein Plugin im Spiel ist, hatte ich versucht zu prüfen. In dieser Installation sind allerdings mächtig viele Plugins aktiv und wenn ich einige davon deaktiviere, funktioniert die ganze Site nicht mehr.
Wenn ich es recht bedenke, dann ist es nicht unwahrscheinlich, dass eine Pluginfunktion null zurückgegeben hatte. Ich selbst habe das, glaube ich, in einigen Plugins so gemacht, z.B. wenn die Pluginfunktion nichts sinnvolles ausgeben kann. Ist natürlich nicht wirklich korrekt, eben weil eine Pluginfunktion immer eine Zeichenkette liefern sollte (die eben auch leer sein kann). Tipp für Pluginentwickler: nutzt statische Analysetools und Typdeklarationen. Dann fällt sowas auf, bevor man das Plugin überhaupt testet.