Models im Zend Framework, zum Dritten in 3 Jahren

Donnerstag, 24.09.2009

Traditionen müssen gewahrt werden. Anscheinend ist der September immer der Monat, in dem ich mich intensiver mit dem Thema Models im Zend Framework beschäftige. Bereits vor 3 Jahren und im letzten Jahr habe ich darüber geschrieben, dass das Zend Framework im eigentlichen Sinne noch keine Implementation des Ms vom Model-View-Controller bereit stellt. Das Proposal, das im letzten Jahr noch vielversprechend aussah, ist mittlerweile wieder eingeschlafen. Und auch das Kapitel über Zend_Model wurde bisher immer noch nicht geschrieben. Doch wie ist denn nun der Stand der Dinge?

Über das Thema ist einiges in den Blogs zu lesen. Federico Cargnelutti hat im März eine kleine Serie zum Thema Domain-Driven-Design veröffentlicht und vor einigen Tagen noch das Thema DALs, DAOs und DataMapper aufgegriffen. Wer sich darunter nichts vorstellen kann, lese hier weiter:

Padraic Brady schreibt derzeit an seinem Open Book zum Zend Framework und hat auch schon zwei Kapitel zum Thema Models veröffentlicht. Diese sind unbedingt lesenswert:

Auch bei Matthew Weier O’Phinney ist eine kleine Artikelserie erschienen, die aber schon einige Monate auf dem Buckel hat. Er schreibt über den Einsatz von Zend_Form und Zend_Acl in einem Model sowie über eine Model Infrastruktur:

Und was ist nun offiziell im Zend Framework im Gange? Nicht wenige würden sich sehr darüber freuen, wenn das Zend Framework mehr Unterstützung zum Thema Models bereit stellen würde. Es gibt dabei zwar viele Ansätze und keinen goldenen Weg, aber dennoch würden Tipps und Anregungen die Arbeit erleichtern. Und dann noch ein paar nützliche und durchdachte Komponenten dazu, dann wäre alles gut. Und was soll ich sagen? Es kommt langsam Bewegung in die Sache, denn derzeit werden von Benjamin Eberlei zwei neue Komponenten vorbereitet: Zend_Entity und Zend_Db_Mapper. Der Proposal klingt sehr spannend und in ähnlicher Form wird dieser Ansatz auch schon im QuickStart des Zend Frameworks eingesetzt. Auch dort gibt es Mapper und Model Klassen sowie Instanzen von Zend_Db_Table.

Es bleibt also spannend.

http://www.ralfeggert.de/2006/09/07/fehlende-komponenten-im-zend-framework/

Tweet this via redir.ec

Zend Framework 1.9.3 und 1.9.3PL1 sind erschienen

Mittwoch, 23.09.2009

Das ging gestern schnell. Planmäßig ist das Zend Framework Release 1.9.3 erschienen und brachte fast 100 Änderungen mit sich. Dies ist auch dem ersten monatlichen Bug Hunt Tagen geschuldet, über die ich noch berichten werde. Im Changelog zum Release 1.9.3 findet ihr alle Details. In der Ankündigung für dieses Release wurde bereits darauf hingewiesen, dass das Release die Rückwärtskompatibilität (backwards compability) brechen würde. Dies betrifft die Methode Zend_Db::factory(), bei denen bisher die folgenden Aufrufe jeweils zum identischen Ergebnis geführt haben:

PHP:
  1. $db = Zend_Db::factory('Pdo_Mysql');
  2. $db = Zend_Db::factory('PDO_MYSQL');
  3. $db = Zend_Db::factory('pdo_mysql');

Egal wie der Aufruf in den drei Beispielen aussah, es wurde am Ende immer eine Instanz des Datenbankadapters Zend_Db_Adapter_Pdo_Mysql zurück geliefert. Intern wurde aus dem übergebenen String somit ein CamelCase String gemacht. Dieses Verhalten wurde mit dem Release 1.9.3 nun geändert, so dass fortan die drei Beispiel versuchen die folgenden Datenbankadapter zu laden und zu instantieren:

  • Zend_Db_Adapter_Pdo_Mysql
  • Zend_Db_Adapter_PDO_MYSQL
  • Zend_Db_Adapter_pdo_mysql

Da dieses neue Verhalten doch so einige Probleme bei bestehenden Zend Framework Applikationen hervorruft, war den Entwicklern zuerst nicht bewusst. Eilig wurde eine Lösung gesucht und es wurde in der Mailingliste und im IRC fleißig darüber diskutiert, wie man dieses Problem wieder aus der Welt schaffen könne. Und das Ergebnis war ein neues Release, das Zend Framework Release 1.9.3PL1, das dann heute nacht erschienen ist. Nun verhält sich die Methode Zend_Db::factory() wieder wie vorher. Wann diese durchaus sinnvolle Änderung nun wieder Einzug erhalten wird, ist noch unklar. Ich denke im 1.10.1 Release wird dies wahrscheinlich der Fall sein.

Tweet this via redir.ec


Better Tag Cloud