This is a talk I gave at the International PHP Conference 2007 - Spring Edition in Ludwigsburg, Germany. The talk covers archtiectural aspects of client-development. The main focus is the comparison of data-, event- and state-binding concepts in PHP-only and PRADO based applications.
2. Carsten Lucke
PRADO
Sprecher: Carsten Lucke
• Sofware-Ingenieur bei der sd&m AG,
München
• Aktives Mitglied der sd&m Client-
Community
• PEAR und PECL Entwickler
• Schreibt für Fachzeitschriften/-bücher über
diverse PHP-Themen
2
3. Carsten Lucke
PRADO
Agenda
• Architektur von (Web-)Clients
• Kurze Einführung in PRADO
• Data-Binding in Web-Clients
• Event-Binding in Web-Clients
• State-Binding in Web-Clients
• Wiederverwendung von Komponenten
3
4. Carsten Lucke
PRADO
Agenda
> Architektur von (Web-)Clients
Kurze Einführung in PRADO
Data-Binding in Web-Clients
Event-Binding in Web-Clients
State-Binding in Web-Clients
Wiederverwendung von Komponenten
4
5. Carsten Lucke
PRADO
Technische Infrastruktur von Web-Clients
5
6. Carsten Lucke
PRADO
Technische Infrastruktur von Web-Clients
PC
Client (Browser-Teil)
Webserver
Client (Server-Teil)
Application-
server
Anwendungskern
Persistenz
DB-Server
Datenbank
5
7. Carsten Lucke
PRADO
Technische Infrastruktur von Web-Clients
PC
Client (Browser-Teil)
Webserver
Client (Server-Teil)
Synchronisation der
Zustände notwendig
Application-
server
Anwendungskern
Persistenz
DB-Server
Datenbank
5
8. Carsten Lucke
PRADO
Einblicke in eine Dialogarchitektur
6
9. Carsten Lucke
PRADO
Einblicke in eine Dialogarchitektur
GUI-Bibliothek (JSF, PRADO, Tapestry, ...)
Dialog
Präsentation
Dialoglogik
6
10. Carsten Lucke
PRADO
Einblicke in eine Dialogarchitektur
GUI-Bibliothek (JSF, PRADO, Tapestry, ...)
Dialog
Präsentation
Präsentations-
daten
Dialoglogik
Datenhaltung
6
13. Carsten Lucke
PRADO
Agenda
Architektur von (Web-)Clients
> Kurze Einführung in PRADO
Data-Binding in Web-Clients
Event-Binding in Web-Clients
State-Binding in Web-Clients
Wiederverwendung von Komponenten
7
14. Carsten Lucke
PRADO
Was ist PRADO?
• Framework für Web-
anwendungen in PHP5
• RAD-Ansatz
• Programmierparadigma:
• komponenten-basiert
• ereignisgesteuert
8
15. Carsten Lucke
PRADO
PRADO Grundlagen
• Eine PRADO-Seite
besteht aus:
9
16. Carsten Lucke
PRADO
PRADO Grundlagen
• Eine PRADO-Seite
besteht aus: <com:TLabel ForControl=quot;uidquot; Text=quot;Username:quot; />
<com:TTextBox ID=quot;uidquot; />
• einem .page File für <com:TLabel ForControl=quot;pwquot; Text=quot;Password:quot; />
die GUI <com:TTextBox ID=quot;pwquot; TextMode=quot;Passwordquot; />
<com:TButton Text=quot;Loginquot; ID=quot;submitquot;
OnClick=quot;loginClickedquot; />
9
17. Carsten Lucke
PRADO
PRADO Grundlagen
• Eine PRADO-Seite
besteht aus:
• einem .page File für class LoginPage extends TPage {
die GUI ....
}
• einem .php File für die
fachliche Logik
9
18. Carsten Lucke
PRADO
Agenda
Architektur von (Web-)Clients
Kurze Einführung in PRADO
> Data-Binding in Web-Clients
Event-Binding in Web-Clients
State-Binding in Web-Clients
Wiederverwendung von Komponenten
10
24. Carsten Lucke
PRADO
Datenzustände bei PRADO
• Ausgangszustand der
Maske
14
25. Carsten Lucke
PRADO
Datenzustände bei PRADO
• Ausgangszustand der
Maske
• Eingabe eines Wertes und
nachfolgend Klick auf
„Continue“
14
26. Carsten Lucke
PRADO
Datenzustände bei PRADO
• Ausgangszustand der
Maske
• Eingabe eines Wertes und
nachfolgend Klick auf
„Continue“
• „POST-back“ Zustand
14
42. Carsten Lucke
PRADO
Agenda
Architektur von (Web-)Clients
Kurze Einführung in PRADO
Data-Binding in Web-Clients
> Event-Binding in Web-Clients
State-Binding in Web-Clients
Wiederverwendung von Komponenten
18
47. Carsten Lucke
PRADO
Event-Binding
Quicksearch: <enter searchterm> Search
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
20
48. Carsten Lucke
PRADO
Event-Binding
Suchergebnis
einschränken
Quicksearch: <enter searchterm> Search
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
20
49. Carsten Lucke
PRADO
Event-Binding
Suchergebnis
einschränken
Editieren von
Quicksearch: <enter searchterm> Search
Einträgen
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
20
50. Carsten Lucke
PRADO
Event-Binding
Suchergebnis
einschränken
Editieren von
Quicksearch: <enter searchterm> Search
Einträgen
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
Hinzufügen/Löschen
von Einträgen
20
51. Carsten Lucke
PRADO
Event-Binding „php-only“
Quicksearch: <enter searchterm> Search
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
21
52. Carsten Lucke
PRADO
Event-Binding „php-only“
<form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;>
Quicksearch: <enter searchterm> Search
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
21
</form>
53. Carsten Lucke
PRADO
Event-Binding „php-only“
<form name=quot;tablequot; action=quot;<?php ... ?>quot; method=quot;postquot;>
Quicksearch: <enter searchterm> Search
Quicksearch: <enter searchterm> Search
<input type=quot;textquot; name=quot;inpQuickSearchquot; value=quot;<?php ...?>quot; />
<input type=quot;submitquot; name=quot;quicksearchquot; value=quot;Searchquot; />
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
21
</form>
56. Carsten Lucke
PRADO
Event-Binding mit PRADO
Quicksearch: <enter searchterm> Search
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
22
57. Carsten Lucke
PRADO
Event-Binding mit PRADO
<com:TForm>
Quicksearch: <enter searchterm> Search
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
</com:TForm>
22
58. Carsten Lucke
PRADO
Event-Binding mit PRADO
<com:TForm>
Quicksearch: <enter searchterm> Search
Search
<com:TTextBox ID=quot;inpQuickSearchquot; />
<com:TButton Text=quot;Searchquot; OnClick=quot;btnQuickSearchClickedquot; />
• Lastname Firstname
Blankerts Arne
Kleine Frank
Lucke Carsten
Mordziol Sebastian
Schaufelberger Gerd
Schmidt Stephan
- +
</com:TForm>
22
61. Carsten Lucke
PRADO
Agenda
Architektur von (Web-)Clients
Kurze Einführung in PRADO
Data-Binding in Web-Clients
Event-Binding in Web-Clients
> State-Binding in Web-Clients
Wiederverwendung von Komponenten
23
71. Carsten Lucke
PRADO
State-Binding bei PRADO
• Aktive/inaktive GUI- 123,34 123,34
Elemente
$this->myTextbox->Enabled
= false;
26
72. Carsten Lucke
PRADO
State-Binding bei PRADO
• Aktive/inaktive GUI- 123,34 123,34
Elemente
$this->myTextbox->Enabled
= false;
• Dynamische Auswahl von 123,34
123,34
GUI-Elementen
324,422
23223
if ($short_text) {
$this->myTextbox->TextMode =
TTextBoxMode::SingleLine;
} else {
$this->myTextbox->TextMode =
TTextBoxMode::MultiLine;
}
26
73. Carsten Lucke
PRADO
Agenda
Architektur von (Web-)Clients
Kurze Einführung in PRADO
Data-Binding in Web-Clients
Event-Binding in Web-Clients
State-Binding in Web-Clients
> Wiederverwendung von Komponenten
27
74. Carsten Lucke
PRADO
PRADO und Wiederverwendbarkeit
• Jede PRADO-Komponente (TComponent) ist an sich
wiederverwendbar
Im Speziellen:
• Controls (TControl)
• Modules (TModule)
Außerdem: Wahrscheinlichkeit zur Wiederverwendung
von fachlichem Code deutlich höher durch saubere
Trennung von Präsentation und Geschäftslogik
28
75. Carsten Lucke
PRADO
Vielen Dank für Ihre Aufmerksamkeit!
Haben Sie Fragen?
http://lucke.info
29