O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Webentwicklung mit CakePHP

Book Description

CakePHP ist ein Rapid-Development-Framework für PHP, das bewährte Entwurfsmuster und Programmiertechniken nutzt und PHP-Entwicklern damit eine leistungsfähige Infrastruktur für ihre Webapplikationen bietet. Mit CakePHP lässt sich die Entwicklungszeit von PHP-Anwendungen extrem beschleunigen, denn viele Routineaufgaben werden automatisiert abgearbeitet. Dieses Buch bietet den optimalen Einstieg in das Framework für Entwickler, die ein neues Enterprise-Werkzeug kennenlernen wollen, mit dem sie elegante, stabile, leicht skalierbare und gut strukturierte Webanwendungen entwickeln können.

Der schnelle Start in die Praxis:

Dieses Buch zeigt Ihnen ganz konkret anhand eines Beispielprojekts, wie CakePHP funktioniert: Ein Crashkurs lässt Sie direkt mit der Webentwicklung starten, danach lernen Sie das MVC-Modell als Basis für die CakePHP-Programmierung kennen. Der Blick unter die Haube von Model, View und Controller vermittelt Ihnen solides Wissen über die zugrunde liegenden Techniken, so dass Sie die Architektur Ihrer Anwendung flexibel an Ihre Bedürfnisse anpassen können.

Der vollständige Überblick über CakePHP:

Schritt für Schritt werden dann alle Elemente der Erstellung einer Webapplikation mit CakePHP erläutert, und es werden die Aufgaben der CakePHP-spezifischen Konstrukte wie Helper, Elements und Components sowie das Session-Handling beschrieben. Darüber hinaus beleuchtet das Buch fortgeschrittene Techniken, so dass Sie sich leicht auch in die Tiefen des Frameworks vorarbeiten können. Behandelt werden unter anderem:

  • Scaffolding und Prototyping

  • CakePHP-Console und Bake-Shell

  • Interaktivität mit Ajax

  • Sicherheit, Authentifizierung und Autorisierung

  • Lokalisierung und Internationalisierung

  • Testing, Debugging und Fehlerbehandlung

  • Das breite Themenspektrum und die praxisnahe Herangehensweise machen dieses Tutorial zum maßgeblichen Handbuch zu CakePHP.

    Table of Contents

    1. Webentwicklung mit CakePHP
      1. Vorwort
      2. Einleitung
        1. Für wen ist dieses Buch gedacht?
        2. Aufbau dieses Buchs
        3. Typographische Konventionen
        4. Verwendung der Codebeispiele
        5. Die Codebeispiele zu diesem Buch
        6. Die CakePHP-Welt
          1. Die Cake Software Foundation
          2. Die Cake Development Corporation
          3. Weiterführende Quellen
          4. Danksagungen
      3. 1. CakePHP kennenlernen
        1. Was ist ein Framework?
        2. Grundprinzipien des CakePHP-Frameworks
          1. DRY — Don't Repeat Yourself
          2. Rapid Development
          3. CRUD — CREATE, READ, UPDATE und DELETE
          4. Convention over Configuration
        3. Das Model-View-Controller-Pattern
          1. Das Model
          2. Das View
          3. Der Controller
        4. Das Zusammenspiel der CakePHP-Komponenten
          1. MVC in CakePHP
          2. Weitere Komponenten
            1. Plugins
            2. Routes und der Dispatcher
            3. Die CakePHP-Console
            4. Tests
        5. CakePHP-Entwicklung Schritt für Schritt
          1. 1. CakePHP aufsetzen
          2. 2. Das Datenbankschema
          3. 3. Das Model erstellen
          4. 4. Den Controller erstellen
          5. 5. Views erstellen
          6. 6. Die Anwendung erweitern und verbessern
        6. CakeJobs — die Beispielanwendung
      4. 2. Installation und Konfiguration
        1. Installation des Webservers
          1. Setup unter Windows
          2. Setup unter Mac OS X
            1. Installation mit Bordmitteln unter Mac OS X 10.5 Leopard
            2. MAMP als fertigen Webserver installieren
          3. Setup unter Linux/UNIX
        2. Installation von CakePHP
          1. CakePHP herunterladen und entpacken
            1. Verzeichnisstruktur
          2. Datenbankkonfiguration
          3. Installation testen
        3. Installation der CakePHP-Console
          1. Die Console unter Windows einrichten
          2. Die Console unter Mac OS X einrichten
      5. 3. Schnell zum Erfolg — Ihre erste Webapplikation mit CakePHP
        1. Die Datenbank als Grundlage der Applikation
          1. Eine neue Datenbanktabelle
          2. Das Model für die Datenbanktabelle
          3. Daten mit dem Controller verarbeiten
        2. Die Anwendung starten und Gerüste bauen
          1. Der Quelltext des Beispiels
      6. 4. Der Controller
        1. Aufbau des Controllers
          1. Was soll die Applikation können?
          2. Welche Actions und Parameter werden benötigt?
          3. Die Übersicht über alle Jobangebote
          4. Detailansicht der Jobangebote
          5. Bearbeiten eines Jobangebots
          6. Anlegen eines Jobangebots
          7. Jobangebote löschen
        2. Attribute und Methoden im Controller
          1. Controller-Attribute
            1. Components einbinden — $uses, $helpers und $components
            2. Seitentitel setzen — $pageTitle
            3. Zugriff auf die Parameter der Anfrage — $params
            4. Auf Daten zugreifen — $data
          2. Controller-Methoden
            1. Dem View Daten übergeben — set()
            2. Der Action ein Ende machen — render()
            3. Den Fluss steuern — redirect( ) und flash( )
        3. CakePHP-Konventionen
          1. Dateinamen
          2. Model-Konventionen
          3. Controller-Konventionen
      7. 5. Das Model
        1. Was ist ein Model?
        2. Validierung im Model
          1. Eigene Validierungsregeln
          2. Mitgelieferte Validierungsregeln
        3. Ein zweites Model einbinden
        4. Model-Relationen herstellen
        5. Retrieve: Daten finden
          1. Der Finder-Methode find()
            1. find('list')
            2. findNeighbours($conditions = null, $field, $value)
            3. findAllThreaded($conditions, $fields, $sort)
          2. Parameter der find()-Methode
            1. Bedingungen definieren — conditions
            2. Zu selektierende Felder definieren — fields
            3. Sortierung mit order und direction
            4. Tiefe der Rekursion in Fremdmodels — recursive
            5. limit
          3. Das magische find()
          4. ActiveRecord auslesen: read($fields, $id)
          5. Einzelne Felder auslesen: field($name, $conditions, $order)
        6. Create und Update: Daten speichern
          1. create($data)
          2. save($data, $validate, $fieldList)
          3. saveAll($data, $options)
          4. saveField($name, $value, $validate)
          5. updateAll($fields, $conditions)
        7. Delete: Daten löschen
          1. Datensätze mit del() löschen
          2. deleteAll($conditions, $cascade)
        8. Model-Methoden und -Attribute
          1. Model-Methoden
            1. SQL ausführen — query()
            2. Model-Schema überprüfen — hasField($name)
            3. Vorkommnisse von Daten überprüfen — hasAny($conditions)
            4. Die Einzigartigkeit von Datensätzen überprüfen — isUnique($fields, $or)
            5. Die Validierung manuell überprüfen — validates() und invalidFields()
            6. Informationen über die letzten Abfragen — getInsertID(), getNumRows() und getAffectedRows()
          2. Model-Attribute
            1. Tabellennamen überschreiben — $useTable
            2. Name des Primärschlüssels — $primaryKey
            3. Anzeigefeld definieren — $displayField
            4. Alternative Datenbankkonfiguration verwenden — $useDbConfig
            5. Tabellenschema ändern oder simulieren — $_schema
            6. Weitere Attribute
          3. Ausblick
      8. 6. Das View
        1. Was ist ein View?
        2. Die Template-Engine in CakePHP
          1. Ordnerstruktur und Dateinamen
          2. Aufbau einer Template-Datei
          3. Rahmen-Layouts festlegen
          4. Die dynamischen Bereiche des Layouts
          5. Templates und Layouts zur Laufzeit festlegen
            1. Die Variable $layout
        3. Nützliche Helfer im View: Die Helper-Klassen
          1. Der Form-Helper
            1. Das <form>-Tag erstellen — create($model, $options)
            2. Das <form>-Tag beenden — end($options)
            3. Formulare erstellen — input($fieldName, $options)
            4. Attribute der weiteren Input-Elemente
            5. Validierung
            6. before, between und after
        4. Die Mini-Views: Elements
          1. Zusammenfassung
      9. 7. Helper — Lassen Sie CakePHP für sich arbeiten
        1. Die Standard-Helper von CakePHP
        2. Der HTML-Helper
          1. Bilder mit dem HTML-Helper ausgeben
          2. Formatierte Textabschnitte erzeugen
          3. Listen erstellen
          4. Tabellen erzeugen
          5. CSS-Stylesheets erstellen
          6. Breadcrumbs — Brotkrumen sammeln und anzeigen
        3. Der Text-Helper
          1. Worte hervorheben
          2. Links entfernen und hinzufügen
          3. Texte kürzen und Ausschnitte erstellen
          4. Textlisten erstellen
        4. Der Time-Helper
          1. Zeitpunkte formatieren
          2. Wann war das? — Zeitpunkte überprüfen
          3. Zeitpunkte in SQL
        5. Der Number-Helper
          1. Währungen ausgeben
          2. Prozentwerte angeben
          3. Datengrößen darstellen
          4. Werte flexibel formatieren
        6. Der Cache-Helper
          1. Konfiguration
          2. Caching in Ihrer Applikation
          3. Ausnahmebereiche im View definieren
          4. Den Cache leeren
        7. Der Paginator-Helper
          1. Konfiguration im Controller
          2. Die Methode paginate()
          3. Der Paginator-Helper im View
          4. In den Seiten blättern
          5. Sortierungen einfügen
        8. Der JavaScript-Helper und CakePHP
          1. Externe JavaScript-Dateien einbinden
          2. JavaScript-Code in den Quelltext einfügen
          3. Strings und Texte bearbeiten
          4. Die Methode includeScript()
        9. Eigene Helper entwickeln
          1. Der HelloHelper
          2. Generelle Helper-Funktionalitäten mit der AppHelper-Klasse
      10. 8. Session-Handling mit CakePHP
        1. Session-Konfiguration
        2. Die Session-Component verwenden
          1. Grundlagen
          2. Mehr Sicherheit
        3. Der Session-Helper
          1. Ausgaben mit flash() und setFlash()
        4. Beispiel: Ein Merkzettel für Job-Anzeigen
        5. Kekse zum Kuchen — Der Einsatz von Cookies
          1. Die CakePHP-Cookie-Component einsetzen
      11. 9. Die CakePHP-Console und die Bake-Shell
        1. Shells starten
        2. Die Console-Shell kennenlernen
          1. Mit Models arbeiten
          2. Routes testen
        3. Baking — Code automatisch generieren
          1. Model baken
          2. Controller baken
          3. Views baken
          4. Projekte baken
          5. Datenbankkonfigurationen baken
          6. Bake-Kurzbefehle
          7. Hilfe beim Baking
        4. Eigene Shells programmieren
          1. Console-Tasks
          2. Argumente übergeben
      12. 10. Der Controller reloaded — Callbacks, Routes & Co.
        1. Die Controller-Funktionalität erweitern
          1. Models laden
          2. protected und private — den Zugriff auf Methoden einschränken
        2. Controller-Callbacks
          1. beforeFilter()
          2. afterFilter()
          3. beforeRender()
        3. URLs und Routes
          1. Named Parameters
          2. Die Rolle des Dispatchers
          3. Routes definieren
          4. Dynamische Routes einrichten
          5. Reverse Routing nutzen
          6. Admin-Routing nutzen
          7. Die Methode requestAction()
        4. Statische Seiten in CakePHP
      13. 11. Components nutzen
        1. Die Core-Components von CakePHP
          1. Die RequestHandling-Component
            1. Den Datentyp der Rückgabe festlegen
        2. Die Email-Component
          1. Templates und Layouts festlegen
          2. Einfache Text-Mails versenden
          3. Verwendung von Templates
          4. Beispiel: Ein Jobangebot weiterempfehlen
        3. Components selbst entwickeln
          1. Callbacks und Zugriff auf das Model
      14. 12. Das Model reloaded – Bindings, Behaviors & Co.
        1. HABTM — hasAndBelongsToMany-Associations
        2. Model-Bindings
        3. Model-Callbacks
          1. beforeFind($queryData)
          2. afterFind($results, $primary)
          3. beforeValidate()
          4. beforeSave() und afterSave($created)
          5. beforeDelete($cascade) und afterDelete()
          6. onError()
        4. Die AppModel-Klasse
        5. Models durch Behaviors erweitern
          1. Behaviors dynamisch verwalten
          2. Magische Methoden selbst gemacht: $mapMethods
          3. Das TreeBehavior
          4. Schlussbemerkung
      15. 13. Ajax und DHTML mit CakePHP
        1. Prototype und script.aculo.us installieren
        2. Den Ajax-Helper einsetzen
          1. Wichtige Methoden
          2. Ajax-Verlinkungen auf DIV-Elemente
          3. Mit Callbacks arbeiten
          4. Ajax-Formulare erstellen
          5. In-Place-Editor: Eingabefelder »on the fly« erstellen
          6. Ajax-Observer: Benutzeraktionen überwachen
          7. Manuell Ajax-Requests absetzen
        3. Paginierung mit Ajax
        4. JavaScript-Event-Handling
          1. Events definieren
          2. Caching von JavaScript
      16. 14. Sicherheit, Authentifizierung und Autorisierung
        1. Zugriffsschutz mit der Security-Component
          1. Die Security-Component einbinden
          2. Das schwarze Loch: blackHole( )
          3. Actions im Controller schützen
          4. Formularfelder schützen
          5. Den Zugriff mit HTTP-Authentication beschränken
          6. Ein Login-Callback definieren
        2. Authentifizierung mit der Auth-Component
          1. Eine Benutzerverwaltung einrichten
          2. Die Authentifizierung anpassen
        3. Autorisierung mit der Auth-Component
          1. Autorisierung über den Controller
          2. Autorisierung über ein Objekt
        4. ACL – Access Control Lists
          1. Access Control Objects (ACOs) definieren
          2. Access Request Objects (AROs)
            1. Gruppen- und Benutzersystem vorbereiten
            2. AROs erstellen
            3. Benutzer erstellen
          3. Zugriffsrechte zuweisen
          4. Schlussbemerkung
      17. 15. Lokalisierung und Internationalisierung
        1. Grundlagen
          1. Internationalisierung mit gettext
          2. Verwenden Sie UTF-8
        2. Mehrsprachigkeit einrichten
          1. Die nötige Ordnerstruktur anlegen
          2. Was soll übersetzt werden?
          3. Sprachfiles automatisiert erstellen
          4. Die Sprachversion festlegen
          5. Jetzt darf der Benutzer entscheiden
        3. Dynamische Daten internationalisieren
          1. Das Translation-Behavior
          2. Die Model-Klasse erweitern
          3. Die Datenstruktur anpassen
          4. Automagic!
          5. Die Sprache im Model setzen
        4. Die Klasse i18n einsetzen
          1. Die _ _*()-Methoden
      18. 16. Testing
        1. Die Test-Suite installieren
        2. Tests schreiben
          1. Models testen
          2. Controller testen
          3. Components testen
          4. Helper testen
        3. Tests zusammenfassen
        4. Browser-Simulation mit Web Testing
          1. Schlussbemerkung
      19. 17. Weitere Kernfunktionalitäten von CakePHP
        1. Plugins erstellen und einbinden
          1. Ein Plugin erzeugen
          2. Struktur und Verwendung von Plugins
        2. Fehlerbehandlung in CakePHP
        3. Ein eigener ErrorHandler
        4. Debugging in CakePHP
        5. Die CakePHP-Core-Klassen
          1. App::import()
          2. Configure
          3. File und Folder
            1. Folder
            2. File
          4. Sanitize
            1. Strings reinigen
            2. Arrays reinigen
            3. SQL-Injections abfangen
          5. Set
            1. Set::classicExtract($data, $path);
            2. Set::extract($path, $data, $options)
            3. Set::insert($list, $path, $data)
            4. Set::remove($list, $path)
            5. Set::check($data, $path)
            6. Set::diff($val1, $val2)
            7. Set::sort($data, $path, $dir)
            8. Set::merge($arr1, $arr2 = null, ...);
      20. 18. Tipps und Tricks
        1. RSS-Feeds erstellen
        2. Routes dynamisch aus der Datenbank generieren
        3. Zugriff auf die Datenbank ohne Model
        4. Die Auszeichnungssprache Flay nutzen
          1. Ein kurzes Beispiel
          2. Flay im Text-Helper
          3. Die Flay-Klasse
          4. Schlussbemerkung
      21. Kolophon