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.