Page 1 of 1

PHP 8.0: Saner string to number comparisons

Posted: Mon Jan 25, 2021 11:14 pm
by cmb
Maybe the most precarious behavioral change in PHP 8.0 for CMSimple_XH, plugins, templates and addons is the acceptance of the Saner string to number comparisons RFC. While I personally like the new rules, there is quite some potential for silent (and therefore easy to overlook) BC breaks. There is, however, a PR for PHP 7.4 which throws warnings whenever a comparison would yield a different result under PHP 8.0. Since it might be useful to test CMSimple_XH and extensions with these warnings, I've rebased the PR onto commit edb389730d1 and created respective x64 Windows packages for testing purposes:

Re: PHP 8.0: Saner string to number comparisons

Posted: Tue Jan 26, 2021 6:53 am
by olape
A good idea.
I do need to see that I update xampp to 7.4.16, I'm running 7.4.12, but that will be fine.

Thanks

Re: PHP 8.0: Saner string to number comparisons

Posted: Tue Jan 26, 2021 3:28 pm
by lck
cmb wrote:
Mon Jan 25, 2021 11:14 pm
Einfach bestehende php-Dateien mit dem aus deinem zip überschreiben, oder braucht es noch andere Anpassungen?

Re: PHP 8.0: Saner string to number comparisons

Posted: Tue Jan 26, 2021 4:05 pm
by cmb
lck wrote:
Tue Jan 26, 2021 3:28 pm
cmb wrote:
Mon Jan 25, 2021 11:14 pm
Einfach bestehende php-Dateien mit dem aus deinem zip überschreiben, oder braucht es noch andere Anpassungen?
Ich denke nicht. :)

Re: PHP 8.0: Saner string to number comparisons

Posted: Tue Jan 26, 2021 4:42 pm
by lck
cmb wrote:
Tue Jan 26, 2021 4:05 pm
Ich denke nicht. :)
Ok, gemacht. System Xampp portable 7.4.14 und XH 1.7.4 (jungfräulich).

1) PHP Info meldet mir "PHP Version 7.4.13-dev", sollte doch 7.4.16 sein. :?

2) Debug-Mode meldet im Bearbeiten-Modus:
Debug-Mode wrote:WARNING: Result of comparison between 0 and "" will change (0 to 1)
D:\xampp_7.4.14\htdocs\xh174\plugins\page_params\Pageparams_view.php:86
WARNING: Result of comparison between 0 and "" will change (0 to 1)
D:\xampp_7.4.14\htdocs\xh174\plugins\page_params\Pageparams_view.php:112
WARNING: Result of comparison between 0 and "submenu" will change (0 to -1)
D:\xampp_7.4.14\htdocs\xh174\cmsimple\classes\Li.php:76
in der Vorschau
WARNING: Result of comparison between 0 and "" will change (0 to 1)
D:\xampp_7.4.14\htdocs\xh174\plugins\page_params\index.php:115
WARNING: Result of comparison between 0 and "submenu" will change (0 to -1)
D:\xampp_7.4.14\htdocs\xh174\cmsimple\classes\Li.php:76

Re: PHP 8.0: Saner string to number comparisons

Posted: Tue Jan 26, 2021 6:30 pm
by cmb
lck wrote:
Tue Jan 26, 2021 4:42 pm
1) PHP Info meldet mir "PHP Version 7.4.13-dev", sollte doch 7.4.16 sein. :?
Ja, sollte, wurde aber anscheinend vergessen zu aktualisieren.
lck wrote:
Tue Jan 26, 2021 4:42 pm
2) Debug-Mode meldet im Bearbeiten-Modus:
Debug-Mode wrote:WARNING: Result of comparison between 0 and "" will change (0 to 1)
D:\xampp_7.4.14\htdocs\xh174\plugins\page_params\Pageparams_view.php:86
WARNING: Result of comparison between 0 and "" will change (0 to 1)
D:\xampp_7.4.14\htdocs\xh174\plugins\page_params\Pageparams_view.php:112
WARNING: Result of comparison between 0 and "submenu" will change (0 to -1)
D:\xampp_7.4.14\htdocs\xh174\cmsimple\classes\Li.php:76
in der Vorschau
WARNING: Result of comparison between 0 and "" will change (0 to 1)
D:\xampp_7.4.14\htdocs\xh174\plugins\page_params\index.php:115
WARNING: Result of comparison between 0 and "submenu" will change (0 to -1)
D:\xampp_7.4.14\htdocs\xh174\cmsimple\classes\Li.php:76
Wow! In Li ist das Handling unsauber; evtl. ist der von mir früher gepostete Fix gar nicht der richtige. Und in page_params muss wohl auch nachgebessert werden. Das schaue ich mir im Lauf des Abends noch genauer an.

Auf jeden Fall schon mal vielen Dank fürs Testen!

Re: PHP 8.0: Saner string to number comparisons

Posted: Tue Jan 26, 2021 10:44 pm
by cmb
cmb wrote:
Tue Jan 26, 2021 6:30 pm
Das schaue ich mir im Lauf des Abends noch genauer an.
Die gute Nachricht: der page_params Bug und der Li Bug sind gefixt.

Die schlechte Nachricht: Travis-CI ist dabei die kostenlosen Dienste einzustellen. Da steht dann wohl ein Wechsel zu Github Actions (oder vielleicht AppVeyor) an.

Re: PHP 8.0: Saner string to number comparisons

Posted: Wed Jan 27, 2021 7:46 am
by olape
cmb wrote:
Tue Jan 26, 2021 10:44 pm
Die schlechte Nachricht: Travis-CI ist dabei die kostenlosen Dienste einzustellen. Da steht dann wohl ein Wechsel zu Github Actions (oder vielleicht AppVeyor) an.
Abhängigkeiten sind immer Sch... :cry:
Aber hier muss man doch fast vermuten, dass das geplant war.
Ganz nach dem Motto, viele werden den Aufwand scheuen zu wechseln und dann lieber bezahlen.
Aber es scheint, dass das schon Ende 2020 passiert ist oder passieren sollte.

Ansonsten habe ich keinen Plan, was da wirklich alles dranhängt.
Für mich klingt das so, als könne man eigentlich nichts mehr erstellen, zusammenführen oder testen.

Re: PHP 8.0: Saner string to number comparisons

Posted: Wed Jan 27, 2021 6:08 pm
by lck
cmb wrote:
Tue Jan 26, 2021 10:44 pm
cmb wrote:
Tue Jan 26, 2021 6:30 pm
Das schaue ich mir im Lauf des Abends noch genauer an.
Die gute Nachricht: der page_params Bug und der Li Bug sind gefixt.
Super! Getestet, passt, Debugmeldungen sind verschwunden.

Re: PHP 8.0: Saner string to number comparisons

Posted: Wed Jan 27, 2021 10:26 pm
by cmb
olape wrote:
Wed Jan 27, 2021 7:46 am
Ansonsten habe ich keinen Plan, was da wirklich alles dranhängt.
Für mich klingt das so, als könne man eigentlich nichts mehr erstellen, zusammenführen oder testen.
Für uns nicht wirklich viel; wir lassen dort nur für jeden Commit und Pull-Request prüfen, ob die Coding-Standards eingehalten wurden, und ob die Unit-Tests laufen, siehe https://github.com/cmsimple-xh/cmsimple ... travis.yml (und die Ergebnisse. Das funktioniert wohl auch noch für ein paar Wochen, allerdings eben mit großer Verzögerung. Die Umstellung auf einen anderen Service sollte eigentlich nicht viel Arbeit sein, aber klar, man kann nie wissen wie lange andere kostenlose Dienste kostenlos bleiben. :|
lck wrote:
Wed Jan 27, 2021 6:08 pm
Super! Getestet, passt, Debugmeldungen sind verschwunden.
Danke! Ich kam noch immer nicht dazu, die PHP 7.4 Variante tatsächlich auszuprobieren (PHP 8.0 mit dem neuen Xdebug 3 hat mich gestern doch mehr Zeit gekostet als mir lieb war).