nemiah / phpFinTS

PHP library to communicate with FinTS/HBCI servers
MIT License
130 stars 42 forks source link

PHP 7.0 Support #316

Closed na-oma closed 3 years ago

na-oma commented 3 years ago

Aktuell nutzen wir die 1.6 (4960ce2fe2aad51efafb1c856e91fe7fd2a41ac7)

Seit diesem HITANSv7 Fehler (Siehe #309) geht leider gar nix mehr. Habe jetzt die Option

  1. auf den aktuellen master zu gehen, dazu müsste ich aber auf php >=7.1 upgraden, was ich ungern mache atm.
  2. das in 1.6 reinzuhacken @okj579 scheint ja da schon etwas gebaut zu haben
  3. die Version auf 7.0 runterzusetzen und zu hoffen/zu patchen dass das geht

Meine Fragen:

  1. An wie vielen Stellen werden PHP 7.1 Features aktuell benutzt?
  2. Gibt es aktuelle Forks die mit PHP 7.0 laufen?
fbett commented 3 years ago

PHP 7.0 ist seit dem 01.01.2019 EOL. PHP 7.1 hat ebenfalls bereits EOL erreicht. Der letzte Support von PHP 7.2 läuft in 5 Tagen aus.

Ich finde nicht, dass man hier erneut ein Kompatibilität herstellen sollte. Insbesondere sorgen die vielen neuen PHP-Funktionen rund um Typisierung und Syntax für deutlich gesteigerte Code-Qualität.

Falls es Probleme gibt, Updates oder Installationen über den Composer und die CLI durchzuführen, gibt es den praktischen Parameter "--ignore-platform-reqs".

nemiah commented 3 years ago

Wie @fbett schon sagt, hängt vermutlich vieles an der Typisierung. Ich könnte mir vorstellen, dass es vergleichsweise einfach ist, eine abwärtskompatible Version herzustellen, indem einfach nur die neuen Features entfernt werden. Du kannst ja einfach nach den Fehlermeldungen gehen und den Code anpassen. Eventuell können @ampaze und @Philipp91 dazu konkretere Aussagen machen.

Ich wüsste von keinem Fork.

Philipp91 commented 3 years ago

Auf meinem Rechner läuft 7.4, auf dem Server 7.3 (und auch nur, weil ich ihn nicht verwalte und nicht selber updaten kann). Meine IDE schnappt sich das "php": ">=7.1" aus der composer.json und kreidet alles Neuere als Fehler an. Dann ärgere ich mich immer, dass ich Types Properties und so noch nicht verwenden kann und programmiere drum herum. Aber was im Einzelnen das war, weiß ich nicht mehr.

Laut Dokumentation gibt es diese neuen Features:

Eine besonders dauerhafte Lösung scheint mir das aber nicht, weil es Arbeit ist, den Fork dauerhaft zu pflegen. Wenn du nur ein paar Wochen überbrücken willst, könnte es gehen. Aber wenn du regelmäßig Fixes und Verbesserungen aus dem Hauptrepository willst (z.B. HITANSv7), dann musst du diese Änderungen ja jedes Mal wieder anwenden und vielleicht kommen neue hinzu. Es ist jedenfalls nicht mit einem git merge getan, weil es ja nicht notwendigerweise Merge-Konflikte gibt wenn jemand irgendwo in der Bibliothek ein neues Feature nutzt.

Was hindert dich denn daran, direkt auf PHP 8 umzusteigen? Dann gehst du ein paar von diesen Inkompatibilitäts-Listen durch, die meisten Features kommen bei dir vermutlich eh nicht vor, und für den Rest kann man je nach Umfang des Codes halbautomatisiert Lösungen finden -- ähnlich wie die sed-basierten Lösungen oben ja auch.

na-oma commented 3 years ago

Ja gut wäre ein generelles Downgrade wohl nicht ;) Vielleicht helfen eure Posts ja noch anderen Leuten mit dem Problem.

--ignore-platform-reqs bringt aber nur was, wenn der Code keine 7.1 Features nutzt, sonst wird PHP wohl rummeckern.

Ich habe mich jetzt zu einem Upgrade mit Packages von https://sury.org entschlossen, langfristig ist das Upgrade besser. Ist leider alles mit der heissen Nadel gestrickt, kein ordentliches Abhängigkeits-Management, kein ordentliches Testing und daher war ich abgeneigt. So ein Version-Upgrade ist -für mich- immer eine größere Aktion: Alle genutzten Packages neu installieren, Konfig-Dateien müssen übernommen werden, Rückwärtskompatibilität beachtet, ggf auch in den Abhängigkeiten ...

nemiah commented 3 years ago

Für das Upgrade der PHP-Pakete habe ich mir mal folgendes geschrieben:

apt install `dpkg -l | grep "ii php7.2" | awk '{print $2}' | sed 's/7.2/7.4/g'`

Holt sich alle installierten PHP-Pakete, ersetzt 7.2 durch 7.4 und installiert wieder :blush: