php8: Fatal error: Uncaught Error: Undefined constant "int" in...
bearbeitet von Rolf BHallo Jörg,
> Oder gibts nen anderen Trick, mit dem ich die mühevolle Arbeit vermeiden kann?
Nein, einen anderen Trick gibt es nicht.
Du hast insofern Glück, dass PHP einiges seiner früheren Dummheit abgelegt hat.
Dieser Code wird tatsächlich ausgeführt und mault nicht, dass in der Deklaration von test ein "FOO" vor dem $x steht. Er erkennt die Typdeklaration und ersetzt sie nicht durch die Konstante.
~~~php
define ("int", "FOO");
function test(int $x, $y) {
return "Das ist $y - $x";
}
echo test(3, int);
~~~
Aber ist das lesbar? Hat das Zukunft? NEIN! Da musst Du durch. Strings ohne Anführungszeichen sind ein Erbe aus PHP 4 Zeiten und werfen seit PHP 5.2 eine Notice. Seit PHP 7.2 eine Warnung mit der deutlichen Ankündigung des Errors.
Sowas sind technische Schulden. Das Gemeine an PHP ist, dass etliche Dinge, die früher mal ganz normale Praxis waren, auf einmal zu technischen Schulden wurden. Das liegt unter anderem daran, dass die frühen PHP Versionen schludrig konzipiert waren und man das seit vielen Jahren Schritt für Schritt abbaut.
Technische Schulden muss man irgendwann abtragen. Je mehr man sich damit Zeit lässt, desto teurer wird es. Aber das Problem geht nicht weg. Es sei denn, du bist in der glücklichen Lage, selbst wegzugehen und das Problem einem Nachfolger aufzuhalsen.
Das Auffinden der Probleme wird ggf. durch eine gute Entwicklungsumgebung vereinfacht. Oder du rufst den in PHP eingebauten Linter manuell für alle deine Sourcen auf:
<https://www.php.net/manual/en/features.commandline.options.php>
_Rolf_
--
sumpsi - posui - obstruxi