Design Patterns Klassen

07/12/2016 14:09 luki.dc#1
Guten Tag zusammen,

Aktuell bin ich stark am PHP lernen.
Ich will das Prinzip SOLID einhalten daher weiss ich, jede klasse macht genau nur etwas !

Mal zu meiner Struktur:
Ich habe verschiedene Klassen, z.B.
Queries, Handlers, Controllers, Renderers, ValueObjects usw.

Nun möchte ich im Router etwas von der Datenbank verwenden. Da ich das aber evt. noch öfters brauche, lohnt es sich ja nicht, wenn ich den execution code im Router mache sondern brauche eine Class welche das Ergebniss dann an das Value object weiter gibt. Nun ist meine Frage wie nennt man diese klassen ? gibt es da etwas spezielles oder kann ich einfach irgendwie ein Ordner Executions und darin Query Executor Class
07/13/2016 19:13 paddelx3#2
Mhmhmhm, im Router benutzt beziehst du keine Daten...

Ich denke das Design Pattern was du meinst nennt sich MVC ( Model, View Controller ).

Die Model Ebene

Die Model Ebene ist für den Zugriff auf die Datenbank verantwortlich in der Theorie weiß das Model NIEMALS was genau gemacht wird, es stellt und bearbeitet lediglich Daten. Bspsw. haben wir unser Datenbankobject User, die Idee ist das Jedes Model eine Tabelle beherbergt. Demnach bräuchte unser Model nur die Informationen welche Tabelle es zu verwalten hat. Im Hintergrund könnte nun ein ORM laufen von den unser User Objekt extendet.

PHP Code:
class User extends DatabaseORM {
    private 
$table 'users';

nun sollte das ORM das Objekt von der Tabelle Users erstellen und bspsw. Methoden wie get() oder order() [Datenbankmethoden] beherbergen die auf das eigentliche Objekt angewendet werden (User Tabelle).

Die View Ebene

Die View Ebene ist rein für die Ausgabe Erzeugung des Contents Verantwortlich. Bspsw. für das Rendern von Template Dateien.
Dabei bekommt die View Ebene aber nie direkt Daten von Model Ebene
sondern hier springt

Die Controller Ebene

ein. Die Daten vom den Model zur View übergibt und wie der Name schon sagt sonst sämtliche Daten kontrolliert/manipuliert.

Die Router Ebene

Erst jetzt würde der Router greifen, den dieser sollte keine Daten bearbeiten / Sachen manipulieren, sondern je nach Anforderungspfad die Anfrage zu einen unserer Controller leiten.

Das ist die Basis auf der viele Frameworks bspsw. Laravel funktionieren.
Ansonsten geb ich dir mal ein Paar Seiten zum lernen mit auf den Weg.

Code:
http://www.peterkropff.de/site/php/oop.htm
http://www.philipphauer.de/study/se/design-pattern.php
http://php-html.net/tutorials/model-view-controller-in-php/