![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Neuer Benutzer Registriert seit: 13.05.2008
Beiträge: 4
|
Hallo allerseits! Ich benutze in meiner PHP-Anwendung, die objektorientiert aufgebaut habe, eine Datenbank, weiß aber nicht, wie ich sie am besten einbauen soll. Soll ich eine Klasse MySqlDatabase anlegen, über die man dann die Queries sendet? Aber dann stellt sich doch die Frage, wie die einzelnen Models an diese Datenbank gelangen, ich will sie ja nicht in meiner ganzen Anwendung über durch den Konstruktor übermitteln. Gibt es da irgendwelche Standardansätze bzw. habt ihr ein paar Tips für mich auf Lager? Beste Grüße, Lukas |
| | |
| | Nach oben #3 |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
|
Hallo javafreak, aus meiner Sicht ist es egal, ob du nun in PHP oder JAVA implementierst. Die Welt der Pattern bietet dir zu diesem Problem das 3-Schicht-Architektur-Modell, das Data-Mapper-Pattern und das Domain-Object-Pattern. Nutz man diese in Kobination, würde deine Business-Schicht auf eine Komponente zurückgreifen können, die Domain-Objekte (nicht Models!) laden, speichern und löschen kann. Die Anwendung als solches hat damit keine Berührung mit irgendwelchen SQL-Queries. Diese werden allein im Mapper erstellt und gegen eine weitere Abstraktionsschicht abgesetzt. Das ist state of the art im Bereich Enterprise Application Development. Das zend Framework hilft dir da nur bedingt weiter, da es zwar Lösungen für das Active Record- oder das Table Data Gateway-Pattern implementiert, jedoch die Frage nach der allgemeingültigen Abbildung von Relationen zwischen Domain-Objekten nicht beantwortet. Zum allgemeinen Software-Design kannst du dir mal mein Kommentarfunktion-Tutorial durchlesen (http://www.adventure-php-framework.o...ktion-Tutorial). Dieses behandelt Web-Software-Design mit Enterprise Pattern.
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | Nach oben #4 |
| Neuer Benutzer Registriert seit: 13.05.2008
Beiträge: 4
|
Okay, danke erstmal für eure Antworten! Ich schildere noch einmal mein Problem: Ich habe für jeden Datentyp (User, Post, Comment usw.) eine eigene Klasse angelegt. Diese haben diverse setter- und getter-Funktionen (getTitle usw. ) und eben auch eine write Funktion, die die ganze Schose dann in die Datenbank schreibt. Darüber hinaus habe ich Model-Klassen, welche Post-, Comment-, usw Objekte über Funktionen zurückliefern, die sie mit Hilfe von DB-Queries zusammenbauen. Doch wie soll jede Datentyp-Klasse (Post, Comment) Zugriff auf die DB haben? Ich möchte ja nicht jeder Comment-Instanz die ganze Datenbank überreichen. Ich hoffe, ihr versteht was ich meine. Es geht mir also nur um die Kapselung der DB-Connection. |
| | |
| | Nach oben #5 | |
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
|
Hallo javafreak, zunächst noch ein Hinweis: ein Model ist keine Business-Schicht! Ein Model ist die gesammelte Information über den Zustand einer Applikation oder deren interne Abläufe. Aus deiner Antwort schließe ich, dass du dir den Artikel nicht durchgelesen hast. Was du brauchst ist eine konkrete Implementierung einer Business- und Datenschicht, die deiner Präsentationsschicht Methoden für die Abwicklung deiner Applikation und das damit verbundene Datenhandling mitgeben. Im Konkreten Fall des Daten Ladens sollte deine Business-Komponente eine Methode wie getComments(), getCommentByID(), etc. haben. Diese liefern dir eine Liste von Comment-Objekten oder auch nur ein bestimmtes Objekt (=Domänen-Objekt) zurück. Die Datenschicht wiederum stellt der Business-Schicht einen definierten Service über die öffentlichen Methoden zur verfügung, mit denen die Business-Schicht agieren kann. Die Datenschicht wiederum sollte zur Kommunikation auch nur Domänen-Objekte (User, Post, Comment, ...) verwenden. Innerhalb der Datenschicht müssen dann die relationalen Daten aus der Datenbank in Domain-Objekte gemappt werden. Beim Speichern verhält sich das genau umgekehrt, dort müssen aus Objekten SQL-Statements erzeugt werden. Zitat:
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| | |
| | Nach oben #6 | |
| Neuer Benutzer Registriert seit: 13.05.2008
Beiträge: 4
|
Ich glaube ich habe es einigermaßen verstanden. Ich erstelle also mehrere Mapper-Klassen, die je nach Bedarf verschiedene Funktionen zum Laden von Datenbankinhalten inklusive Umformung in Objekte bereitstellen. Die Mapperklassen können also alle mit SQL umgehen. Domänenobjekte sind Objekte, die ganz einfach nur getter- und setter-Methoden bereitstellen. Sie sind also ganz einfach nur 'Datentransporter'. Habe ich's richtig verstanden? Zitat:
Viele Grüße, Lukas | |
| | |
| | Nach oben #7 | ||
| Christian W. Achatz Registriert seit: 05.02.2007 Ort: München
Beiträge: 132
| Zitat:
Zitat:
- Anzeige welcher Inhalte in definierten Views - Informationen über den eingeloggten Benutzer, bzw. den Login-Status - Informationen über den aktuellen Mandanten, falls die Software mandantenfähig ist - Stand innerhalb eines Workflows und deren Informationen aus Formularen etc. Man muss einfach die konkrete Applikation analysieren. Oft wird recht wenig bis garkeine Inormation benötigt. In letzterem Fall kann man nach dem (H)MVC-Pattern auch ohne das "M" auskommen und die Funktion lediglich über ein Template (View) und einen zugehörigen Controller abwickeln.
__________________ Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a look at http://www.adventure-php-framework.org! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Entwurfsproblem: Aus Widgets in Datenbank schreiben? | Basti | PHP-Programmierung | 3 | 29.03.2007 13:13 |
| Problem bei Verarbeitung von Templates (Eigene Klassen) | dago | PHP-Programmierung | 21 | 31.08.2006 16:02 |
| Datenbank und Sicherheit | sparrow | Datenbanken | 23 | 05.11.2005 17:45 |
| Datenbank Verwaltung | taskin73 | Datenbanken | 7 | 30.07.2005 17:07 |
| Zugriff auf Dateien Im Netz | CyberHoney | Desktop-Applikationen und Grafik | 7 | 22.09.2004 16:42 |