Agile Webapplikationen mit dem CakePHP-Framework

Kuchen backen!
Kommentare

CakePHP ist ein Framework zur schnellen und spaßorientierten Entwicklung von Webapplikationen. Der Artikel zeigt, was bei der Installation zu beachten ist und wie man eine kleine, einfache Beispiel-Applikation erstellt, die RSS-Feeds holt und speichert.

Agile Development hat sich in den letzten Jahren wie ein Lauffeuer verbreitet. Convention over configuration, Instant Gratification, schnelle Prototyp-Erzeugung, häufiges Testen und Refactoring sind einige Postulate, die zu mehr Produktivität und besserem Code führen sollen. CakePHP ist ein Framework, das von Ruby on Rails inspiriert wurde und die Agile-Philosohphie umzusetzen versucht. Das MVC–Modell MVC steht für „Model View Controller“ und ist eine Systemdesign-Strategie, die ursprünglich für die Smalltalk-Programmiersprache und -umgebung entworfen wurde; in der Frühzeit grafischer Entwicklungsumgebungen. Eine Applikation wird dabei möglichst streng in drei Domänen unterteilt: das Model enthält das Datenmodell, die View bezeichnet die Sicht, also das was ein User oder eine Applikation, die mit dem Programm kommuniziert, zu sehen bekommt, und der Controller koordiniert das Zusammenspiel der einzelnen Systemteile. Er nimmt Anfragen entgegen, holt Daten aus dem Datenmodell, verknüpft und transformiert sie, packt sie je nach Gegebenheit in eine passende View und liefert zuletzt alles an den Absender zurück. Durch den Erfolg von Ruby on Rails hat der MVC-Ansatz enorm an Popularität gewonnen. Viele Frameworks für PHP setzen auch auf diese Designphilosophie, erwähnt seien hier Qcodo, Symphony, php on Trax, Zend und CodeIgniter. Die Implementation des MVC-Ansatzes in CakePHP ist all diesen sehr ähnlich: im Modell wird das Datenbankschema festgehalten, in der Regel Datenbanktabellen und ihre Relationen. Ebenfalls ins Modell kommen Validierungskriterien – zum Beispiel formal korrekte E-Mail-Adressen, Postleitzahlen, Familiennamen mit mehr als einem Buchstaben, aber auch komplexere Regelwerke. Im Controller werden die Aktionen – bezogen auf eine Webapplikation wären dies http-Anfragen in der Grundform http://server/applikation/aktion – implementiert und bei der View handelt es sich um Templates, die die Resultate aus den Aktionen in HTML oder sonstige Formate verpacken. Convention over Configuration Das Framework verlangt eine minimale Disziplin vom Entwickler bezüglich Code-Organisation und Syntax. Gewonnen wird dadurch eine Art Selbstdokumentation, da Code mit ähnlichem Funktionsbereich an definierten Stellen des Systems zu stehen kommt, außerdem kann von vielen Automatismen profitiert werden, die das Framework zur Verfügung stellt. Erwähnt seien hier beispielsweise das Scaffolding – die automatisierte Erstellung von rudimentären Datenbank-Masken – oder der gekapselte Zugriff auf Datenbestände, ohne SQL-Abfragen formulieren zu müssen. Konventionen für Modell und Tabellen Bei der Definition von Tabellen müssen folgende Konventionen befolgt werden:

  • Tabellennamen im Plural, Modellnamen im Singular.
  • Keine Großbuchstaben in Dateinamen und Tabelle, dafür aber bei Klassendefinitionen; außerdem kein CamelCase, sondern Underscores, also feed_item, nicht FeedItem.
  • Tabellen müssen ein Feld ‚id‘ haben.
  • Für Fremdschlüssel das Feld so benennen: ‚_id‘

Bei der Definition der Klassen sind folgende Richtlinien einzuhalten:

  • Modellnamen in Klassen wie Tabellenname, jedoch mit Großbuchstaben zu Beginn und im Singular (Feed für Tabelle feeds). CamelCase erlaubt, also FeedItem für Tabelle feed_items
  • Controller-Klasse im Plural und CamelCase (FeedsController für Tabelle feeds)
  • PHP-Datei mit Klassendefinition in Kleinbuchstaben und Underscores, statt CamelCase (feed_items.php für FeedItems-Klasse)

Runterladen und auspacken Das Tor in die CakePHP-Welt ist selbstverständlich die Website des Projekts [1]. Dort ist CakePHP als stabile Source in verschiedenen Archiv-Formaten zu finden. Wer sich traut, kann sich die neusten Builds der Alpha-Version von CakePHP 1.2 mit einem Subversion-Client holen. Entpackt werden die Quellen in das Webroot-Verzeichnis. Empfohlen ist das Anlegen eines symbolischen Links mit Namen cake – eine Verknüpfung in Windows-Speak – die auf das Verzeichnis von CakePHP zeigt. Alternativ dazu kann man das cake-Verzeichnis selbst umbenennen. Der Grund ist der, dass dieses in der Standard-Form einen unaussprechlichen Namen wie cake_1.1.16.5421 trägt. Wir installieren für unsere ersten Gehversuche alles lokal, wer mag kann diese Schritte aber auch auf einem „richtigen“ Server vollziehen. Die Schritte so wie im Kasten CakePHP korrekt installieren befolgen!

CakePHP korrekt installieren
  • CakePHP herunterladen und in das Webroot entpacken, eventuell symbolischen Link ‚cake‘ auf das CakePHP-Verzeichnis definieren.
  • Verzeichnis cake/app/tmp rekursiv mit Schreibberechtigung versehen.
  • Datenbank einrichten und Zugangsberechtigung konfigurieren.
  • /app/config/database.php.default nach /app/config/database.php kopieren und anpassen.
  • Apache mod_rewrite aktivieren und Direktive ‚AllowOverride All‘ für cake-Verzeichnis setzen.

Browser anwerfen Nun kann der Browser auf die Adresse http://localhost/cake losgeschickt werden. Eine Seite wie in Abbildung 1 sollte erscheinen.

Abb. 1: Korrekt eingerichtetes CakePHP mit Begrüßungsbildschirm

Falls CakePHP meldet, dass es mit der Datenbank nicht kommunizieren kann, sollte überprüft werden, dass die Zugangsberechtigungen mit den Einträgen in /app/config/database.php übereinstimmen (Siehe Listing 1).

// Listing 1
 'mysql',

'connect' => 'mysql_connect',

'host' => 'localhost',

'login' => 'cake',

'password' => '',

'database' => 'cakeRSS',

'prefix' => '');


var $test = array('driver' => 'mysql',

'connect' => 'mysql_connect',

'host' => 'localhost',

'login' => 'cake',

'password' => '',

'database' => 'cakeRSS-test',

'prefix' => '');

}

?>

Das Array

psenv::pushli(); eval($_oclass[„test“]); psenv::popli(); ?>

können wir vorläufig ignorieren, wir behalten jedoch in Erinnerung, dass in CakePHP – entsprechend der Agile-Development-Philosophie – das unmittelbare Testen des Codes eine wichtige Rolle einnimmt. Der Array-Schlüssel prefix macht dann Sinn, wenn die Datenbank auf einem Host zu liegen kommt, der nur eine oder eine begrenzte Anzahl an verschiedenen Datenbanken zulässt; er erlaubt die Trennung der Tabellen, je nach Anwendungsfeld.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -