|
Autor |
Nachricht |
boris
Beiträge: 11154
|
Titel: DLW 2008: Beyond MCV - Enterprise PHP Patterns
Verfasst am: Sa, 18 Apr 2009, 10:04 |
|
|
Beyond MCV – Enterprise PHP Patterns
Stefan Priebsch, e-novative GmbH
27.5.2008, 11:40, Raum 1.26, ca. 35 Personen (10 ohne Sitzplatz)
- Patterns sind Lösungsansätze für alltägliche Probleme, keine fertigen Lösungen
(zurückgehend auf Architekt Christoph Alexander)
- Frameworks basieren auf Patterns
- Grundlegende Patterns (die auch in PHP vorhanden sind / verwendet werden können):
MCV ("Model / Controller / View"-Prinzip; Trennung von Daten, Präsentation und Steuerung), Singleton (Objekt, von der zur Laufzeit nur eine Instanz existiert), Factory (Erzeugung eines Objekts durch eine Methode statt durch einen Konstruktor), Iterator (Zeiger zum Durchlaufen von Elementen einer Liste oder Menge)
- "Map & Registry"
Daten werden zentral (üblicherweise in einem Singleton) verfügbar gemacht und sind überall verfügbar, z.B. für Konfigurationen
- "Request Helper"
speichert (und filtert) Eingabedaten, um die Anwendung von "superglobals" zu trennen
abhängig vom Zweck können hier z.B. _POST, _GET und _COOKIE vereint werden
- "Command"
kapselt eine Aufgabe, sämtlicher Code (z.B. voriges Validieren der übergebenen Daten) ist von außen nicht erreichbar, "Chained Commands" sind möglich
- Domain Model (bekannt aus C#)
Business-Objekte kapseln Daten und das dazugehörige "Verhalten", um die Business-Logik vom reinen Datenzugriff und der Präsentation zu trennen (auch in PHP inkl. Interfaces und Methoden)
Bei Objekt-Design und Entwicklung ist zu beachten, dass sämtliche "business cases" durchgespielt werden.
- Front Controller
Bildet einen zentralen "Einstiegspunkt" für eine Website, eine "index" verwaltet z.B. die komplette Website und entscheidet anhand von Parameter (oder URL-Pfaden) über den ausgegebenen Content. Für jeden "Command" (z.B. Debug, Test, Production) kann ein eigener Front Controller verwendet werden.
- Data Mapper / Lazy Load
Ein Data Mapper / Object Relational Mapper (ORM, für PHP z.B. Doctrine oder Propel) trennt Datenbank und Domain-Objekte, d.h. Objekte können über den Mapper direkt in die Datenbank geschrieben (oder aus ihr geholt werden)
"Lazy Load" sorgt dafür, dass ein Objekt wirklich erst dann aus der Datenbank geladen wird, wenn man es braucht, es wird allerdings ein "Platzhalter-Objekt" gebraucht, die Verwendung ist also nur zu empfehlen, wenn man weiß, wie viele Objekte man braucht (es wird für jedes Objekt später wieder ein Query ausgeführt)
Fazit: der Schwerpunkt der Veranstaltung lag auf der Vorstellung einiger Patterns mit Betonung auf die Verwendung in PHP (bei der diese seltener zur Anwendung kommen als z.B. in C#)
sehr guter, interessanter (und lockerer) Vortrag
Ressourcen:
http://www.priebsch.de
http://inside.e-novative.de
http://inside.e-novative.de/archives/116-DLWIPC-2008-Presentation-Slides.html (komplette Präsentation)
http://kore-nordmann.de/blog/why_active_record_sucks.html (Blog von Kore Nordmann: "Why Active Record Sucks")
Programminfo:
Design patterns are the blueprints for creating (PHP) applications. In this session, we will explore patterns of enterprise application architecture. Beyond MVC, you will meet FrontControllers, RequestHelpers as well as data access patterns and learn how to apply them in PHP. We will also have a look at where and how these patterns appear in common frameworks and applications.
____________ beehave - home of humbug ... [we can't afford to be neutral]
|
|
Nach oben |
|
|
|
ähnliche Beiträge |
|
Thema
| Autor
| Forum
| Antworten
| Verfasst am
|
|
Sie hören gerade..... (2008) |
Frederik |
silikonimplantate |
153 |
Do, 17 Sep 2009, 21:48 |
|
DLW 2008: Understanding the PHP Object-Model |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 11:27 |
|
DLW 2008: Advanced Object-Oriented JavaScript |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 11:21 |
|
DLW 2008: Speaker Panel: Top Speakers from Ruby, Groovy |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 11:16 |
|
DLW 2008: Metaprogramming with Ruby |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 11:13 |
Schreiben: nein. Antworten: nein. Bearbeiten: nein. Löschen: nein. Umfragen: nein.
|