PHP 8 Project Packages

PHP 8  |  Project Packages & Commitments

Überblick über Zielsetzungen, Vorhaben und Vorgehen.

Die nachstehenden Maßnahmen sind das Ergebnis der Abstimmung von fast 20 Kernentwicklern, die fast 200 Komponenten, Module und Services in ILIAS verantworten.

 

Must-Package
Was muss das gemeinsam getragene Mindestziel aus der Community sein?  —  gleich ob Entwickler, Betreiber oder Anwender. 

Zielsetzungen:

  • ILIAS kann unter PHP 8 betrieben werden, ohne dabei PHP-spezifische Fehler hervorzubringen.
  • Refactored Code genügt aktuellen Coding-Styles
  • Behebung aller Warnings und Errors der statischen Code Inspection (Ohne weak | inkl. undeclared Variables)
  • Überführung von GET Params in Constructor
  • Vermeiden/Reduzieren von POST Zugriffen (z.B. durch $form->getInput()) und Umstellung auf Request-Klassen
  • Nutzung von SESSION (Sessionobjekt , altenativ Zuweiusung statischer Session in Constructor Member-Variablen)
  • Dokumentation aller bestehenden Typisierungen als Typehints (von Parametern, Rückgabewerten und Properties)
  • Erstellung einer Unit-Test-Infrastruktur in der Komponente

Bedingung und Analysekriterien

  • Bewahren der Unit-Test-Abdeckung trotz Refactoring
  • Einfacher Aufruf aller Tabs/Screens (ohne z.B. Lösch- und Verschiebeaktionen) und Behebung der entsprechenden Bugs
  • Prüfunge externer Bibliotheken
  • Grundlage des Refactorings und der Reviews ist u.a. ILIAS Development Documentation

Should-Package
Was gilt es zu unternehmen, um mittelfrisitg wiederkehrend große Code-Revisions abzufangen und Refactoring über das Mindestmaß zu betreiben?

  • Erweiterung der Unit-Test-Abdeckung
  • Generelle und strukturelle Verbesserungen und Optimierungen an der Codebasis. Beispielsweise ...
    • ... bei statischen Funktionen und durch entfernen von statische Methoden
    • ... durch Einführung von Return-Type-Declaration
    • ... durch Typisierung aller Variablen
      • Input-/Output-Typisierung von Methoden
      • Typisierung von Member-Variablen
  • Verwendung von inzwischen eingeführten und etablierten UI-Components aus UI-Framework "KitchenSink". Abbau von Legacy-UI und Legacy-Code.

Sustainability-Package
Die Entwickler-Community sieht durchaus Themen, die darüberhinaus unter Gesichtspunkten von PHP aber auch generell für ILIAS Qualitätssteigerungen hervorbringen würden. Themen die idealerweise im Zuge des systematischen Refactorings direkt mit bearbeitet werden könnten.

  • Einführung und Nutzung von Deklarationen von  "strict_types" für Daten
  • Ersetzen bisherige Arrays durch Klassen, welche ArrayAccess ermöglichen – zukunftig auch getter / setter
  • Umstelleung bisheriger Arrays auf Generators/Datenobjekte

PHP 8  |  Reviews & Quality Assurance 

Zu Zwecken der Qualitätssicherung sollen alle Maßnahmen des Refacortings ein PeerReview durch einen zweiten Entwickler erfahren – ein in dieser Größenordnung noch nicht dagewesene Unternehmung im ILIAS-Entwicklungsprozess.

Grundlage der Reviews bilden die Guidelines, Coding-Styles, Dokumentationen und natürlich die Vorgaben die PHP 8 liefert, sowie die, die bereits für PHP 8.1 angekündigt sind.