CakePHP Veröffentlichungen

Neue Versionen von CakePHP erschienen

Alles neu macht der Mai: Passend zum Monatswechsel sind nun die neuesten Versionen von CakePHP erschienen. Die neue Stable im "alten Branch" ist die 1.2.7. Aber auch nach einiger Zeit als Release Candidate ist nun die fertige Version aus dem 1.3er Branch erschienen.

Das ist besonders großartig, da sich die Entwicklungszeit zum Vorherigen RC verkürzt hat und die Qualität des Projekts noch mal gestiegen ist. Wir erklären alle wichtigen Änderungen und wie man die eigenen Applikationen migriert.

Wesentliche Vorzüge des neuen Branches 1.3 sind verbessertes Routing sowie verbessertes Bootstrapping. Aber auch die Assets und Themes haben Updates erhalten, sodass Code sich nun noch besser kapseln und modularisieren lässt.

Wie bestehende Anwendungen auf Basis von CakePHP 1.2.x auf 1.3 umgestellt werden, ist im Kochbuch zu finden. Die interessantesten Veränderungen in der Übersicht:

Components können genau wie Behaviors Arrays mit Initialisierungsinformationen tragen. Das ermöglicht das direkte Setzen von Werten und verringert die Komplexität der 

beforeFilter() im AppController.
var $components = array(
    'Cookie' => array(
        'name' => 'MyCookie'
    ),
    'Auth' => array(
        'userModel' => 'MyUser',
        'loginAction' => array('controller' => 'users', 'action' => 'login')
    )
);

Die App Klasse ist nun endlich das, was der Name vermuten lässt - der zentrale Dreh- und Angelpunkt für die Applikation. An ihr können unter Anderem Pfade konfiguriert werden, die zeigen, wo welche Bibliotheken zu finden sind. Zum Beispiel:

App::build(array(
    'plugins' => array('/full/path/to/plugins/', '/next/full/path/to/plugins/'),
    'models' =>  array('/full/path/to/models/', '/next/full/path/to/models/'),
    'views' => array('/full/path/to/views/', '/next/full/path/to/views/'),
    'controllers' => array('/full/path/to/controllers/', '/next/full/path/to/controllers/'),
    'datasources' => array('/full/path/to/datasources/', '/next/full/path/to/datasources/'),
    'behaviors' => array('/full/path/to/behaviors/', '/next/full/path/to/behaviors/'),
    'components' => array('/full/path/to/components/', '/next/full/path/to/components/'),
    'helpers' => array('/full/path/to/helpers/', '/next/full/path/to/helpers/'),
    'vendors' => array('/full/path/to/vendors/', '/next/full/path/to/vendors/'),
    'shells' => array('/full/path/to/shells/', '/next/full/path/to/shells/'),
    'locales' => array('/full/path/to/locale/', '/next/full/path/to/locale/')
));

In seinem Blog schreibt Mark Story über die App Klasse.

Datasources können jetzt importiert und in Plugins gelagert werden; ebenso Konfigurationsdateien, die nun mittels Configure::load('Pluginname.config') geladen werden können. Die dazugehörige Datei liegt anschließend im Plugin im Ordner 'config'.

Neu: Virtuelle Felder an Models - eine sehr nützliche Methode, um weitere Attribute dynamisch über die Datenbank zu ergänzen. Beispiele und Hinweise zur Bedienung im Kochbuch - Virtuelle Felder.

Verbesserte Router und Dispatcher. Es können eigene Router-Klassen definiert und im Dispatcher benutzt werden. Dies erleichtert das Handling von Routen, zum Beispiel für Plugins oder bei dynamischen Verknüpfungen. Mark Story erklärt die Verwendung der Router Klasse.

Endlich da: JavaScriptHelper. Warum ist das so cool? Bisher hat der AjaxHelper immer mit Prototype JS gearbeitet. Jetzt gibt es einen generischen (bedeutet: JS-Framework agnostischen) JsHelper. Dieser kann auch mit jQuery oder MooTools verwendet werden. Der nun ebenfalls komplett überarbeitete AjaxHelper nutzt dann das JS-Framework, das gegebenenfalls ohnehin in der Applikation verfügbar ist.

Änderungen bei Vendors und Libs: Es gibt zusätzlich zum Vendor Ordner einen Lib-Ordner. Die Verwendung ist soweit identisch, es lassen sich aber nun hier Drittanbieter-Bibliotheken und eigene Bibliotheken besser trennen.

Der Ordner webroot, zu finden unterhalb von Plugins, ermöglicht die Ablage von beliebigen Assets, also Stylesheets, Bildern, Javascript-, sowie auch Flash- Dateien und Weiterem. Die gleiche Struktur lässt sich auch in vendors-Ordnern ablegen und damit global verfügbar machen.

Verbessertes Errorhandling innerhalb des gesamten Frameworks vereinfacht das Unit-Testing und erlaubt, bestimmte Sondersituationen besser zu handeln.

Zusätzlich gibt es noch zahlreiche Änderungen bzw. Verbesserungen an Validations, Inflector, Set und weiteren Klassen. Besonderes Augenmerk wurde auf die API gelegt. So sind nun viele Methoden gleicheartig zu benutzen, was gerade Einsteigern die Arbeit erleichtert.

Weitere Hinweise, Beispiele und kleine Änderungen sind ebenfalls im Kochbuch - Neue Funktionen in CakePHP 1.3 näher beschrieben.

Veröffentlicht von Dirk Brünsicke am 02.02.2011
Tags: Featured, Core

Linksammlung

Und hier ein paar Links zum Thema:

Migration von 1.2.x zu 1.3

Grundsätzlich profitiert jede Applikation von den Neuerungen in CakePHP 1.3. Eine Migration lässt sich einfach durchführen. Erfahrungsgemäß ist bei aktuellen Anwendungen der Aufwand oft kleiner als 10 Minuten. Welche Änderungen gemacht werden müssen, um die alte auf die aktuelle Version umzustellen, steht im Kochbuch - Migrationsanleitung. Wir erklären, welche Änderungen beachtet werden müssen:

Alle Helper sind nun auch über $this->Helper erreichbar. Dies erlaubt, Variablen im View zubenennen , was bisher nicht möglich war, wenn es einen gleichnamigen Helper gab.

Insbesondere im Layout benötigt man nun nicht mehr den Javascript Helper um JS-Dateien zu laden. Dies übernimmt ebenfalls der HTML-Helper. Dadurch ergeben sich (kleine) Änderungen beim Einbinden der JS-Dateien Dateien.

Konkret: $javascript->link() wird zu $html->script()

$javascript->codeBlock() wird zu $html->scriptBlock()

Das Setzen des Titels einer Seite hat sich verändert. Was bisher mit $this->pageTitle gesetzt wurde, muss nun explizit mit $this->set('title_for_layout', $var); gesetzt werden.

Kleinere Änderungen an Helpern sowie an entferntn Konstanten fallen direkt auf. Wer es genau wissen möchte, konsultiert die Migrationsanleitung. Wir wünschen viel Erfolg und gehen in den nächsten Tagen auf Änderungen noch genauer ein und stellen Tricks und Tipps vor.

0 Kommentare

Neuen Kommentar hinzufügen