Revision-History für 1.11
Das Release 1.11 (stable) beinhaltet Bibliotheken für den Einsatz in PHP 4 und
PHP 5. Für die beiden PHP-Versionen werden jeweils eigene Pakete ausgeliefert. Getestet wurde mit
und ohne Kompatibilitätsmodus gegen die Versionen >= 5.2.6 und <= 4.4.8. Die Version ist
für Produktions-Umgebungen freigegeben!
Die aktuelle Version beinhaltet aktuelle Weiterentwicklungen nur noch in der PHP 5-Version
(
*-php5 files). Die
PHP 4-Version ist nur noch eine
eingeschränkte Kompatibilitäts-Version. Nicht enthalten sind darin die
neuen
Formular-Taglibs und die
Weiterentwicklung des GenericORMapper. Ab
dem Release 1.12 wird die
PHP 4-Version nicht mehr
unterstützt! Es wird daher empfohlen, die bestehenden PHP 4-Projekte auf PHP 5 umzustellen.
Der Artikel Migration von 1.10 auf 1.11 fasst die notwendigen Änderungen an den bestehenden
Applikationen zusammen, da die Version nicht nur neue Features, sondern auch einige
Änderungen der API beinhaltet.
Wichtige Änderungen in der Version 1.11 (stable) sind:
-
Refactoring:
Die Klasse MySQLHandler wurde entfernt, da sie bereits in 1.10 als veraltet
gekennzeichnet wurde. Im Zuge dieser Änderungen wurden die Komponenten der
Datenbank-Abstraktion überarbeitet.
-
Erweiterung:
Die im Release enthaltenen Datenbank-Komponenten wurden um ein Statement-Logging
Möglichkeit erweitert. Wird der optionale Parameter $logStatement bei den
Methoden executeStatement() und executeTextStatement() auf true
gesetzt, so wird das aktuell ausgeführte Statement in eine Log-Datei geschrieben.
-
Bugfix 224:
Nach dem Refactoring der Datenbank-Komponenten wurden Collation und Charset
beim MySQLxHandler nicht korrekt initialisiert.
-
Bugfix 223:
Auf Grund der Tatsache, dass Sub-Sektionen in Konfigurationen nicht korrekt interpretiert wurden,
implementiert der ConfigurationManager nun eine eigene array_merge()-Funktion.
-
Verbesserung:
Der Report des BenchmarkTimer wurde einer Überarbeitung unterzogen. Der ausgegebene
Quelltext ist nun W3C-konform. Weiterhin wurde die Geschwindigkeit der Report-Generierung
optimiert. Gleichzeitig wurde eine Option eingeführt, die den Benchmarker abschaltbar
macht. Details hierzu können der Dokumentation unter
Benchmark und dem Wiki unter
Deaktivieren BenchmarkTimer
entnommen werden.
-
Erweiterung:
In den bisherigen Releases wurden für das onParseTime()-Event einer Taglib (siehe
Lifecycle einer Taglib)
kein Messpunkt gesetzt. Dies wurde nun hinzugefügt und der Benchmark-Report dadurch
aussagekräftiger gestaltet.
-
Refactoring:
Die Klasse xmlParser wurde im Zuge eines internen Refactorings in XmlParser
umbenannt. Diese Änderung betrifft zunächst nur Framework-interne Komponenten, sollte
diese in eigenen Applikationen verwendet werden, muss die Umbenennung dort ebenso vorgenommen werden.
-
Erweiterung:
Mit dem Release 1.11 wurden erstmals sog. ”Extensions“ in das Release des Adventure
PHP Frameworks aufgenommen. Das sind Erweiterungen von Anwendern, die Ihre Arbeit gerne mit
anderen Teilen. Mehr Informationen zu den vorhandenen Erweiterungen und zur Idee findet sich
im Wiki unter
Extensions.
-
Refactoring:
Das CAPTCHA-Modul wurde zusammen mit dem Refactoring der Formular-Taglibs überarbeitet.
Bitte beachten Sie, dass sich dadurch die Konfiguration des Moduls geändert hat. Die
Dokumentation ist unter CAPTCHA-Taglib (für Formulare) in aktualisierter Version verfügbar.
-
Verbesserung:
Das generische Domänen-Objekt des Generischer O/R-Mapper (GenericDomainObject)
wurde erweitert, so dass es in serialisierter Form in einer Session oder einem anderen Speicher
(z.B. memcached) abgelegt werden kann.
-
Refactoring:
Die bestehenden Module des APF (comment, kontakt4, guestbook, ...)
wurden im Rahmen der Überarbeitung der Formular-Taglibs an die neue Implementierung angepasst.
-
Erweiterung:
Im Zuge eines Artikels für das PHP Journal
wurde das neue Gästebuch-Modul guestbook2009 implementiert. Die Beschreibung des
Moduls findet sich in den Artikeln Objektorientiertes Design eines Gästebuchs und Objektorientierte Implementierung eines Gästebuchs.
-
Bugfix 202:
Nach der änderung einer Funktionalität, wurden vom umgtManager nur noch
Passwörter für neu angelegte Benutzer gehashed. Dies wurde wie unter
Speichern von userobject -> passwort falsch
beschrieben mit dem Release behoben.
-
Erweiterung:
Wie in der
Roadmap
beschrieben, wurde ein Update-Tool für den Generischer O/R-Mapper eingeführt. Dieses
unterstützt den Entwickler dabei, eine mit dem Setup-Tool des OR-Mappers aufgesetzte
Datenbank bequem an eine neue oder veränderte Konfiguration anzupassen. Die Dokumentation
enthält dazu das neu Kapitel Generischer O/R-Mapper - Update der Datenbank.
-
Verbesserung:
Im Rahmen der Erweiterung der Datenbank-Komponenten wurde der GenericORMapper um eine Debug-Option
erweitert. Beim Erzeugen des Mappers kann nun ein optionaler Parameter bei der Methode
getGenericORMapper() der optionale Parameter $logStatements auf true
gesetzt werden. Dies bewirkt, dass alle ausgeführten Statements in eine Log-Datei protokolliert
werden. Details können der Doku unter
Generischer O/R-Mapper entnommen werden.
-
Erweiterung:
Ab dem Release 1.11 kann jedes Objekt, das vom Generic OR-Mapper gespeichert wurde, direkt
weiter verwendet werden. Der Mapper injiziert diesem bereits die aktuelle Mapper-Instanz und
die ID des Objektes in der Datenbank. Details zum Feature-Request können dem Foren-Eintrag
Erweiterung GORM (Release 1.11)
entnommen werden.
-
Refactoring:
Das HTML-Markup und die CSS-Formatierung des Kontakt-Formular-Moduls wurden komplett
überarbeitet. Das bedeutet, dass nun die unter /modules/kontakt4/pres/css/
befindliche Datei contact.css bei Verwendung des Moduls im Header der Seite eingebunden
und an die Bedingungen der Seite angepasst werden muss. Das Markup enthält eine Vielzahl
von Klassen, die hierzu verwendet werden können. Bitte beachten Sie dazu die Hinweise auf
Kontaktformular-Tutorial.
-
Erweiterung:
Die CAPTCHA-Taglib (für Formulare) wurde um die Attribute text_id und image_id
erweitert. Damit ist es nun möglich HTML-IDs für CAPTCHA-Bild und Text-Feld zu
definieren. Dies ist insbesondere notwendig für das Definieren von <label />-Tags
und wurde für die Änderung des HTML-Markup des Kontakt-Formular-Moduls eingeführt.
-
Erweiterung:
Die CAPTCHA-Taglib (für Formulare) wurde im das Attribut disable_inline erweitert. Dieses
erlaubt es die für die Positionierung ausgegebenen CSS-Inline-Styles zu deaktivieren. Sofern
diese deaktiviert sind, kann der Entwickler die Darstellung des CAPTCHA per CSS frei definieren.
-
PHP 5.3-Bugfix:
Die in PHP 5.3 veraltete Funktion split() wurde in der Taglib
<form:date />
mit explode() ausgetauscht. Details dazu können dem Foren-Thread
Form-date taglib -> split()
entnommen werden.
-
Bugfix/Verbesserung:
Der Generische OR-Mapper escaped nun aus Sicherheits-Gründen
alle eingegebenen Objekt-Properties, bevor diese in die Datenbank gespeichert werden. Dies wurde
zum einen wegen Statement-Fehlern und zum Anderen zur Stärkung der Sicherheit der Komponente
eingeführt. Details zur Diskussion sind unter
Sicherheit des GORM
einzusehen.
-
Erweiterung:
Wie im Forum unter
Fehler mit BIT-Feldern
diskutiert, unterstützte der Generische OR-Mapper (GORM)
bis zum Release 1.11 keine BIT-Felder, da diese in Statements mit dem Präfix "b"
maskiert werden müssen. Aus diesem Grund wurde der GORM in Release 1.11 um die Behandlung
von BIT-Feldern erweitert. Diese werden erkannt, wenn der Datentyp einer Property
"BIT" lautet.
-
Refactoring:
Die Klasse linkHandler wurde im Zuge der Code-Bereinigung in LinkHandler
umbenannt, frontcontrollerLinkHandler in FrontcontrollerLinkHandler. Bei
der Migration auf die neue Version müssen die Klassen entsprechend in den eingesetzten
Applikationen umbenannt werden.
-
Refactoring:
Im Rahmen des Release 1.11 wurde gemäß
Roadmap
die Formular-Implementierung des APF komplett überarbeitet. Die Neuerungen und die Funktion
können unter Formulare (ab Version 1.11) nachgelesen werden, was für die Einführung
der neuen Formulare zu tun ist, entnehmen Sie bitte dem Artikel Migration von 1.10 auf 1.11.
-
Bugfix 185:
Gemäß Bugreport wurde bei der Transformation des Iterators im vorangegangenen Release nicht
behoben. Dies wurde in 1.11 nun nachgeholt.
-
Refactoring:
Die Klasse myValidator wurde im Zuge der Code-Bereinigung in Validator
umbenannt und ist nach dem Refactoring nicht mehr für die Validierung der Formulare relevant.
-
Verbesserung:
Die CacheManagerFabric wurde so umgestaltet, dass diese über den
DIServiceManager
erzeugt werden kann.
-
Verbesserung:
Der Aufruf von trigger_error() wurde aus der Methode LinkHandler::generateLink()
entfernt. Dies vermeidet Programm-Abbrüche bei leerer Basis-Url, die ohnehin mit einem
Leerstring initialisiert wurde.
-
Erweiterung:
Der Iterator-Tag wurde um weitere Subtags ergänzt um die
Entwicklung zu erleichtern. Details entnehmen Sie bitte der
Dokumentation
und dem Foren-Beitrag
item:addtaglib & item:getstring (Release 1.11).
Die Dateien mit dem Namen apf-codepack-* enthalten die Bibliotheken des Framework,
Dateien mit dem Namen apf-demopack-* die Bibliotheken plus einer Demo-Applikation. Für
Einsteiger wird empfohlen die Demo-Packs herunter zu laden. Release-Dateien mit dem Namen
apf-configpack-* beinhalten Beispiel-Konfigurationen, die die Konfigurations-Attribute der
jeweiligen Tools und Anwendungen nochmals beschreiben. Seit dem Release 1.8-RC1 werden zusätzlich
apf-perfcodepack-*-Dateien angeboten. Diese enthalten um Kommentare und Leerzeilen
bereinigte Dateien, die auf Systemen ohne Byte-Code-Caching für die Performance-Optimierung
eingesetzt werden können. Weiterhin wird die Offline-Dokumentation ab Release 1.10 in drei
verschiedenen ZIP-Formaten angeboten. CHM-Dateien sind ab 1.10 nicht mehr verfügbar.