Migration von 1.8 auf 1.9

1. Einleitung

In der Version 1.9 sind einige Änderungen enthalten, die nicht API-konform sind. Daher ist es notwendig, bestehende Anwendungen anzupassen. Die folgenden Kapitel beschreiben die notwendigen Updates und geben Hinweise auf die neu im Release vorhandenen Features.


2. Entfernen des variablenHandler

Wie den Release-Notes zu entnehmen ist, wurde die veraltete Komponente variablenHandler entfernt. Als Ablösung dient die Klasse RequestHandler, die eine sehr ähnliche Funktion bereitstellt.

Die Migration vom variablenHandler auf den RequestHandler gestaltet sich wegen der nahezu identischen API sehr einfach. Im Quellcode muss dabei lediglich
PHP-Code
$myVar = variablenHandler::registerLocal(...);
durch
PHP-Code
$myVar = RequestHandler::getValues(...);
ersetzt werden. Weiterhin muss das import()-Statement
PHP-Code
import('tools::variablen','variablenHandler');
durch
PHP-Code
import('tools::request','RequestHandler');
ausgetauscht werden. Die Änderungen können daher durch "search&replace" vorgenommen werden.


3. Umstieg auf den FilesystemManager

Der Umstieg von der veralteten Komponente filesystemHandler auf den neu hinzugekommenen FilesystemManager gestaltet sich etwas aufwendiger. Hier hat sich nicht nur der Name der Klasse und der Methoden geändert, sondern auch die Funktionalität.

Die folgende Tabelle zeigt die Änderungen der Methoden und deren Signaturen:

Methode des filesystemHandler (alt) Methode des FilesystemManager (neu)
deleteFolderRecursive($folder = '') deleteFolder($folder[,$recursive = true])
deleteWorkDir() deleteFolder($folder[,$recursive = false])
changeWorkDir([$folder = '.']) -
renameFile($fileName,$newFileName) renameFile($sourceFile,$targetFile[,$force = false])
getAffectedFiles() -
deleteFiles($files = array()) -
- removeFile($file)
copyFile($sourceFile,$targetFile) copyFile($sourceFile,$targetFile[,$force = false])
showFileSize($$file) -
showDirContent() getFolderContent($folder[,$fullpath = false])
showDirSize() showFolderSize($folder)
showDirContentCount() -
showFileAttributes($file) getFileAttributes($file[,$attributeName = null)]
deleteWorkDir() -
isFileNameUnique($folder,$fileName) -


Anmerkungen:
  • renameFile(): $sourceFile und $targetFile müssen qualifizierte Pfad-Angaben enthalten. Ist der dritte Parameter auf true gesetzt, so wird die u.U. vorhandene Zieldatei überschrieben.
  • removeFile(): $file muss eine qualifizierte Pfad-Angabe enthalten.
  • copyFile(): $sourceFile und $targetFile müssen qualifizierte Pfad-Angaben enthalten. Ist der dritte Parameter auf true gesetzt, so wird die u.U. vorhandene Zieldatei überschrieben.
  • Die Methode uploadFile() behält ihre Signatur, jedoch muss der Name der Ziel-Datei selbständig auf Korrektheit (z.B. erlaubte Zeichen) überprüft werden. Zudem gibt die Funktion nun nur noch true bzw. false, nicht jedoch den Pfad zur Zieldatei zurück.
  • Die Methode getFileAttributes() gibt ein assoziatives Array mit Attributes zurück. Falls der zweite Parameter den Namen eines Attributes enthält, wird statt der Liste der Wert desselben zurückgegeben.
  • Die in der Komponente FilesystemManager enthaltenen Methoden sind alle statisch.

Die Verwendung der neuen Klasse kann der API-Dokumentation oder der Klassenreferenz entnommen werden.


4. Änderungen des Pagers

Das Release 1.9 enthält mehrere Kompatibilitätsänderungen am Pager.


4.1. Änderung der Konfiguration

Um die neuen Version des Pagers mit dem GenericORMapper verwenden zu können, wurde der Datenbank-Zugriff auf den ConnectionManager umgestellt. Des Weiteren können zur Steigerung der Performance des Pagers die Ergebnisse der Datenbank-Abfragen in der Session zwischengespeichert werden. Hierzu wird der SessionManager eingesetzt.

Um die erweiterte Version des Pagers nutzen zu können, müssen in den bestehenden Konfigurationsdateien zwei dafür verwendete Parameter ergänzt werden. Diese sind:
APF-Template
Pager.DatabaseConnection = "<ConnectionKey>" Pager.CacheInSession = "true|false"
Die erste Direktive benennt die zu nutzende Datenbank-Verbindung (siehe connectionManager), der zweite Parameter definiert, ob die Pager-Ergebnisse in der Session zwischengespeichert werden sollen.


4.2. API-Änderungen

Des Weiteren umfasst das Refactoring der Komponente einige Änderungen der API. Die folgende Tabelle zeigt diese im Überblick:

Methode des pagerManager (alt) Methode des PagerManager (neu)
loadEntries() loadEntries([$addStmtParams=array()])
loadEntriesByAppDataComponent( &$DataComponent, $LoadMethod) loadEntriesByAppDataComponent( &$dataComponent, $loadMethod[, $addStmtParams=array()])
getPager() getPager([$addStmtParams=array()])


Anmerkungen:
  • Wichtigste Änderung ist, dass die zusätzlich von der Applikation mitgegebenen Parameter nun statt bei der Initialisierung des Pagers beim Aufruf der Lade-Methoden übergeben werden muss.
  • Weitere Änderung ist, dass die Fabrik-Klasse von pagerManagerFabric auf PagerManagerFabric umbenannt wurde. Dies bedingt, dass die Erzeugung des Pagers nun über
    PHP-Code
    $pMF = &$this->__getServiceObject('modules::pager::biz','PagerManagerFabric'); $pM = &$pMF->getPagerManager('{CONFIG_SECTION}');
    erfolgt.

5. Änderungen des ImageManagers

Die neue API des ImageManager beinhaltet im nun exakt zwei statische Methoden. Für die Migration bedeutet dies, dass die Methoden generateThumbnail() und resizeImage() durch Aufrufe der neuen Methode resizeImage() und alle Aufrufe von showImageAttributes() durch getImageAttributes() ersetzt werden müssen.

Dabei ist zu beachten, dass die Methode getImageAttributes() andere Schlüssel für die Attribute des jeweiligen Bildes benutzt. Details können der Klassenreferenz entnommen werden.


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.