Migration von 3.1 auf 3.2

1. Einleitung

Version 3.2 ist in sehr großen Teilen komplett kompatibel mit der Vorgänger-Version. Neben der Ausführung der automatisierten Migration fallen lediglich kleiner Anpassungen an, die in Kapitel 3 beschrieben werden.

Mit dem Erscheinen dieses Release wird die Weiterentwicklung der Version 3.1 eingestellt. Security- und Bug-Fixes werden bis Mitte 2017 verfügbar sein.

In diesem Artikel erfahren Sie, wie Sie eine bestehende Anwendung auf APF-Version 3.2 aktualisieren können. Wie bereits von den vorangegangenen Versionen gewohnt, kann die Migration auch in diesem Release weitestgehend automatisiert erfolgen. Zu diesem Zweck liegen zwei Migrations-Skripten bei: migrate-code.sh für die Aktualisierung von HTML- und PHP-Dateien und migrate-config.sh für Konfigurations-Dateien.

Das APF-Team empfiehlt, die Nutzung der Migrations-Skripten einer manuellen Migration vorzuziehen. Dies spart Zeit und Kosten und stellt sicher, dass alle relevanten Stellen erfasst wurden.

Die folgenden Kapitel stellen die notwendigen Schritte zum Umstieg auf Version 3.2 zusammen.

2. Automatisierte Migration

Die Migration mit Hilfe eines mitgelieferten Migrations-Skripts erledigen. In diesem Release wurden Änderungen an Code- und Konfigurations-Dateien vorgenommen, die mit Hilfe der Skripte migrate-code.sh und migrate-config.sh auf Ihre bestehende Applikation übertragen werden können.

Bitte stellen Sie sicher, dass Sie vor der Migration alle unter Migration von 3.0 auf 3.1 beschriebenen Schritte durchgeführt haben. Setzen Sie eine noch ältere Version ein, migrieren Sie bitte zuerst vollständig auf die Version 3.1. Hinweise zur jeweiligen Migration finden Sie auf der Seite Artikel.
Bitte erstellen Sie vor der Ausführung der Skripten eine Sicherungskopie Ihrer Anwendung um bei Bedarf Inhalte wieder herstellen zu können!

Sofern Sie auf Windows entwickeln, installieren Sie bitte eine aktuelle Version von cygwin (Download unter cygwin.com). Eine Migration auf Basis eines Windows-Batch-Script wird nicht angeboten.

Um Ihre Quell-Code-Dateien auf den neuesten Stand zu bringen, führen Sie das Skript bitte wie folgt aus:

Bitte wechseln Sie vor der Ausführung in das Code-Verzeichnis Ihrer Applikation um unerwartete Ergebnisse zu vermeiden.
Code
$ /path/to/APF/migration/migrate-code.sh /cygdrive/c/xampp/php/php ############################################# # APF 3.2 automatic code migration # ############################################# Checking PHP executable available ... [OK] Using given php executable at /cygdrive/c/xampp/php/php. PHP Version: 5.6.12. ############################################# Starting migration ... * Migrate place holder methods ... * Rewrite deprecated registerAction() to addAction() ... ############################################# Migration done! Please check your code and follow instructions within migration documentation!

Um Ihre Konfigurations-Dateien auf den neuesten Stand zu bringen, führen Sie das Skript bitte wie folgt aus:

Bitte wechseln Sie vor der Ausführung in das Konfigurations-Verzeichnis Ihrer Applikation um unerwartete Ergebnisse zu vermeiden.
Code
$ /path/to/APF/migration/migrate-config.sh /cygdrive/c/xampp/php/php ############################################# # APF 3.2 automatic configuration migration # ############################################# Checking PHP executable available ... [OK] Using given php executable at /cygdrive/c/xampp/php/php. PHP Version: 5.6.12. ############################################# Starting configuration migration ... ############################################# Migration done! Please check your configuration and follow instructions within migration documentation!

3. Manuelle Schritte

Das Migrations-Skript kann leider nicht alle Projekt-spezifischen Konstrukte migrieren. Die folgenden Kapitel zeigen, welche manuellen Schritte notwendig sind um bestehenden Code mit der Version 3.2 einsetzen zu können:

3.1. API-Änderung der Platzhalter

In der Version 3.2 wurden im Rahmen des Issues #284 die Methoden setPlaceHolderIfExist() und setPlaceHoldersIfExist() aus den Klassen Document und BaseDocumentController. Dies erhöht die Performance für das Setzen von Platzhaltern deutlich.

Bei der Aktualisierung auf die neue Version werden die Methoden durch die automatische Migration bereits aus dem Quellcode Ihres Projektes entfernt. Bitte stellen Sie sicher, dass die Methoden auch aus Code, der APF-Funktionalität überschreibt entfernt wird.

Nutzen Sie statt dessen die Methoden setPlaceHolder() und setPlaceHolders(), die ab der Version 3.2 keine InvalidArgumentException mehr werfen, wenn der Platzhalter nicht gefunden werden kann.

3.2. BenchmarkTimer-Report

Mit dem Issues #214 wurde die Performance des BenchmarkTimer deutlich verbessert. Um eine bessere Erweiterbarkeit der Komponente zu gewährleisten wurden die Funktion zur Aufnahme der Messpunkte und zur Generierung von Berichten ausgelagert. Für die Aufzeichnung der einzenen Messpunkte ist nun die DefaultStopWatch zuständig und der HtmlReport generiert die Ausgabe des Berichts.

Zur Erleichterung der Analyse konnten im HTML-Bericht bereits vor Version 3.2 die kritischen Zeiten rot markiert werden. Die Anpassung der Zeiten konnten mit der Methode setCriticalTime() vorgenommen werden:

PHP-Code
$t = Singleton::getInstance(BenchmarkTimer::class); $t->setCriticalTime(0.15); echo $t->createReport();

Da die Ausgabe des Berichts nun in einer eigenen Komponente statt findet - dem HtmlReport - muss die Definition der kritischen Zeit auch dort vorgenommen werden. Passen Sie deshalb alle oben beschriebenen vorkommen wie folgt an:

PHP-Code
$t = Singleton::getInstance(BenchmarkTimer::class); $report = new HtmlReport(); $report->setCriticalTime(0.15); echo $t->createReport($report);

Kommentare

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.
Für diesen Artikel liegen aktuell keine Kommentare vor.