php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 1,00 durchschnittlich.
Alt 12.11.2009, 12:13  
Neuer Benutzer
 
Registriert seit: 12.11.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
phil9r befindet sich auf einem aufstrebenden Ast
Standard Datenbankzugriff + Login + Tmp-System

Hallo liebe Gemeinde,

folgendes Projekt möchte ich gerne realisieren:

Mir faellt kein vernuenftiger Text ein, also schreibe ich ein Fallbeispiel ...

"Wir" sind Haendler, User1 kauft bei uns regelmaessig Kerzen und soll nur diese sehen.
User2 kauft Handtuecher, soll also nur Handtuecher sehen.

Ein Admin soll die User verwalten koennen.
Jeder User soll die Möglichkeit haben die ihm vorgesetzten Daten zu exportieren und dann per eMail zu verschicken (wahlweise auch DL).
Klingt recht einfach, soweit.

Ich hab mir dazu folgende Gedanken gemacht:

Class Export:
stellt auf Basis des eingeloggten Users die Daten zusammen und uebergibt sie an:
Class CSV:
Stellt die Daten als CSV zur Verfügung.
Class PDF:
Stellt die Daten als PDF zur Verfügung.
und noch viele andre Schnittstellen.

Class DB:
überprüft die Daten auf Wohlgeformtheit und dient als Schnittstelle für:
Class SQL:
Treiber für MySQL.
Class Oracle:
Treiber für Oracle.
und noch viele andre DBs.

Class User:
kümmert sich um Login und Userdinge (Rechteverwaltung etc).

Class Mail:
schreibt die Email mit Anhang.

Class Log:
Log Klasse.

Die HTML-Templates sollen für die Enduser (also im Browser) editierbar sein.
Meine Frage an euch:

Welches Templatesystem würdet ihr mir empfehlen? Finde Smarty soweit ganz gut, kanns aber nicht in google trends werfen mit andren, weil dann nur Muell rauskommt - habe auch noch keine Moeglichkeit gefunden gt einzuschraenken.

Vorerst solls nur über den MySQL-Treiber laufen, alle andren DB's sollen dann hinzufügbar sein.
Gibt es hierfür empfehlbare gute SQL-Klassen die auf Injections und solche Dinge prüfen?

Gibt es fähige Login / User Klassen die meinen Anforderungen entsprechen, bzw nur Login-Klassen, da ich mir nicht zutraue eine sichere Login-Klasse selbst zu schreiben. Die Userverwaltung kriege ich dann schon hin...

Welche Log-Klasse ist zu empfehlen?
Soll nicht besonders viel können, verschiedene Levels loggen - das wars. Effektiv reicht ne einfache Funktion dafuer, so ließe sich das aber spaeter einfacher verwalten / anpassen.

Die Mail-Klasse duerfte auch nicht zu schwer werden - wenn ich das Rad nicht neu erfinden muss, bin ich aber nicht traurig darum.

Habe google schon ein wenig nach Login-Klassen angeworfen, auch ein paar brauchbare.


Bevor nun die Antworten kommen "Google doch nach allen" oder so, ich will nicht von euch dass ihr mir die Zusammentstellt und das Projekt für mich schreibt - mich interessieren lediglich eure Vorlieben was derartige Dinge angeht und vielleicht findet ihr in den folgenden Posts auch Klassen die eure ersetzen.



Noch ein wenig Konzeptionelles:
Export sage ich welcher User grade exportieren möchte und ob es Filter gibt.
Dort wird sich um das beschaffen der Daten gekümmert, die dann als Array oder aehnliches an die Datentypenklassen übergeben werden, die sich dann um den Rest kuemmern.

Die DB - Klasse ist ein Interface, die erbende Klasse (MySQL) müsste diese Funktionen dann so aufarbeiten dass die Klasse selbst diese dann ohne Probleme einspeisen kann - da muss ich zwar dann die SQL-Klasse anpassen (wenn ich eine hernehme die es schon gibt - klar) und das halt immer wenn ich update, aber was bessres faellt mir irgendwie nicht ein - und so viel mehr als n Copy'n'Paste waer das dann wahrscheinlich nicht.


Soweit also zu meinen Anforderungen, wie gesagt ich will keine Musterloesungen von euch oder fertige Codeschnippsel sondern nur ein paar Anregungen.

Vielen Dank,
phil
phil9r ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.11.2009, 12:55  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Halllo Phil,

ich habe gerade leider nicht die Zeit eine ausführliche Antwort zu liefern. Ich denke jedoch, du solltest zunächst anfangen, die Anforderungen etwas zu strukturieren. Hier würden ein Domänen-Modell, die Use-Cases und ein paar Diagramme zum Aufbau und Ablauf der Logik relevant sein. Schau dir mal den Artikel Objektorientiertes Design eines Gästebuchs an, dort wird eine Vorgehensweise für die Erstellung eines Designs erläutert.

Grundsätzlich gilt:
  • Use cases erstellen
  • Domänen-Modell erstellen
  • Komponenten analysieren und entsprechend ihrer Funktion gruppieren
  • Tool auswählen, das dir bereits viel Arbeit abnimmt (z.B. User-Management)
Mehr gibt es später von mir.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 12.11.2009, 23:31  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Phil,

hier noch ein paar Statements zu deinen einzelnen Punkten:

Zitat:
Class Export:
stellt auf Basis des eingeloggten Users die Daten zusammen und uebergibt sie an:
...
Dein Klassen-Design ist IMHO zunächst zu starr. Du solltest dir erst klar machen, welche fachliche Funktionalität deine Software besitzt. Das passiert auf einer Ebene, auf der Klassen noch nichts zu suchen haben. So ist es auch nicht wichtig, dass du eine Export-Klasse hast, denn die technische Funktionalität kann auch in mehreren Klassen oder einen Skript stecken. Beispiel: deine Applikation besitzt eine Datenschicht und eine Komponente, das den Export generiert. Eine weitere ist für die Darstellung des Export-Dialogs da. So wird letztere zunächst die gewünschten Parameter vom Benutzer entgegen nehmen, dann die Export-Komponente aufrufen, die wiederum die allgemeine Datenschicht verwendet um die zu exportierenden Daten zu liefern. Sofern du sehr viele Daten exportierst, ist u.U. ein Export per notwendig, der eine Datei auf Platte anlegt und du in der Oberfläche lediglich einen Link dorthin anbietest.

Zitat:
Class User:
kümmert sich um Login und Userdinge (Rechteverwaltung etc).
Das ist konzeptionell nicht korrekt. User != Recht und das ist auch im realen Leben so. Deine Rolle in der Gesellschaft ist dir vom System gegeben und nicht aus dir selbst heraus. Kling philosophisch, ist aber de facto so. Aus diesem Grund solltest du in deinem Domänen-Modell die einzelnen Entitäten sauber modellieren. Anregungen zu einem Domänen-Modell einer Benutzer-Verwaltung findest du hier.

Zitat:
Die HTML-Templates sollen für die Enduser (also im Browser) editierbar sein.
Es soll also jeder beliebige Benutzer (=Besucher der Seite) Templates ändern können? Sicher nicht, oder?

Zitat:
Welches Templatesystem würdet ihr mir empfehlen? Finde Smarty soweit ganz gut, kanns aber nicht in google trends werfen mit andren, weil dann nur Muell rauskommt - habe auch noch keine Moeglichkeit gefunden gut einzuschraenken.
Es geht nicht darum, welches Template-System du brauchst, sondern was deine Anforderungen sind. Hast du diese nicht definiert, macht es auch keinen Sinn auf die Suche zu gehen. Um es mit den Worten von Captain Jack Sparrow zu sagen: Denn wenn du nicht weißt, was dein Schlüssel aufschließt, dann lohnt es sich auch nicht zu suchen, nach dem was der Schlüsssel aufschließt weil wir nicht wissen, was er aufschließt.

Zitat:
Vorerst solls nur über den MySQL-Treiber laufen, alle andren DB's sollen dann hinzufügbar sein.
Gibt es hierfür empfehlbare gute SQL-Klassen die auf Injections und solche Dinge prüfen?
In deinen zwei Sätzen stellst du auf zwei unterschiedliche Anforderungen ab. Zum einen geht es um Auswechseln von Treiber-Schichten - also eine Abstraktion - und zum anderen um Sicherheit. Letztere wirst du nirgends out-of-the-box bekommen, da musst du immer selbst etwas dazu tun. Viele Komponenten maskieren die Eingaben schon automatisch, andere nicht.

Was das Thema Treiber-Schichten und Abstraktion angeht, kannst du dir mal den ConnectionManager ansehen. Dieser liefert dir Instanzen der gewünschten Treiber (aktuell MySQL und SQLite). Beim Thema Sicherheit, maskiert der MySQL-Treiber für die Methode executeStatement() alle Eingaben automatisch.

Zitat:
Gibt es fähige Login / User Klassen die meinen Anforderungen entsprechen, bzw nur Login-Klassen, da ich mir nicht zutraue eine sichere Login-Klasse selbst zu schreiben. Die Userverwaltung kriege ich dann schon hin...
Auch hier der Hinweis: nicht jede Funktionalität ist auch gleich einer Klasse. Das ist kein OOP, sondern prozedurale Programmierung, die in ein Klassen-Gerüst gepresst ist. Wenn es um Benutzer-Verwaltung geht, spreche ich gerne von einem "UserManagementManager", der anderen Applikationen oder Modulen als Business-Komponente zur Verfügung steht. Diesen können dann entsprechende andere Komponenten zur Authentifizierung und Authorisierung eines Benutzers verwenden. Aus OOP-Sicht gibt es jedoch keine Login-Klasse.

Sofern du etwas fertiges suchst, kannst du dir die oben verlinkte Seite zum Thema Benutzer-Domänen-Modell ansehen. Diese stellt bereits alle relevanten Funktionalitäten zur Verfügung.

Nun denke ich, solltest du zunächst mal dein bisheriges Design präsentieren, dann können wir zu den einzelnen Punkten ins Detail gehen. Solltest du weiteres Material zu Software-Design suchen, schau mal hier im Software-Design-Forum in den MVC-Threads, da lässt sich einiges an Know-How rausziehen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 13.11.2009, 15:26  
Neuer Benutzer
 
Registriert seit: 12.11.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
phil9r befindet sich auf einem aufstrebenden Ast
Standard

Wow, die zweite Antwort war dann mal die verbale Backpfeiffe.

Vielen lieben Dank für deine beiden Antworten, ich habe mir die erste sofort zu Herzen genommen - an der zweiten beisse ich glaube ich noch ein wenig.

Zitat:
Das ist kein OOP, sondern prozedurale Programmierung, die in ein Klassen-Gerüst gepresst ist.
Wenn man auch nur kurz drueber nachdenkt - stimmt.

Nach einigen Stunden des Nachdenkens und Lesen deiner Websites bin ich zu folgendem Ergbniss gekommen.

Ich habe jetzt zwei Wege offen:
Entweder ich schau mir APF an und werde das ganze damit realisieren (gesetzt den Fall es entspricht dem was ich brauche)
oder
ich entwickle nahezu alles selbst. APF scheint mit einigem mehr an Aufsatz zu kommen, als ich brauche und dabei bin ich mir unsicher ob der Mehraufwand des Einarbeitens in APF sich dem Nutzen gegenüber rechtfertigen kann ...

Vorerst hab ich gleich Feierabend, das Problem lass ich mir nochmal intensiv durch den Kopf gehen und mich heute Abend nochmal melden - gesetzt den Fall du (oder auch jemand anderes) hat noch einen entscheidenden Einfall / Ratschlag fuer mich - immer her damit.


Vielen Dank,
phil

Geändert von phil9r (13.11.2009 um 16:25 Uhr).
phil9r ist offline   Mit Zitat antworten
Alt 15.11.2009, 13:42  
Erfahrener Benutzer
 
Registriert seit: 24.10.2008
Beiträge: 300
PHP-Kenntnisse:
Fortgeschritten
KarlEgon befindet sich auf einem aufstrebenden Ast
Standard

Meine Erfahrung:
Ich brauchte eigentlich nur ein Template System und hatte da ein paar Fragen zu. Dr.e. hat mir auch das APF vorgeschlagen und ich war erst der Meinung, dass es viel zu viel Overhead ist. Allerdings habe ich mich dann doch irgendwie in das APF eingearbeitet und ich muss sagen, dass ich es mir nicht mehr wegdenken kann. Es ist zwar am Anfang ein bisschen gewöhnungsbedürftig, aber man findet sich schnell rein und baut seine Applikation automatisch ganz anders auf
KarlEgon ist offline   Mit Zitat antworten
Alt 15.11.2009, 14:53  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Phil,

Zitat:
Wow, die zweite Antwort war dann mal die verbale Backpfeiffe.
So würde ich das nicht bezeichnen, ich habe nur deine Vorgehensweise genauer analysiert und gegen eine OO-Vorgehensweise verglichen. Sicher mag das erst mal shocking gewesen sein, aber es ist keinesfalls negativ sondern eher konstruktiv zu sein. Es ist kein Meister vom Himmel gefallen - jeder muss erst lernen. Da wir uns hier aber im Software-Desin-Forum befinden, ist das Niveau natürlich deutlich höher zu finden, als in den beiden anderen PHP Foren. Aus diesem Grund ist das Gap auch erst mal größer. Aber lass dich nicht einschüchtern, das lässt sich alles meistern.

Zitat:
Ich habe jetzt zwei Wege offen:
Entweder ich schau mir APF an und werde das ganze damit realisieren (gesetzt den Fall es entspricht dem was ich brauche) oder ich entwickle nahezu alles selbst.
Das sind denke ich nicht die Wege, die du jetzt überlegen solltest. Als erstes ist wichtig, dass du dir über das Design Gedanken machst. Wir im oben verlinkten Artikel beschrieben ist, sollte das die erste Aufgabe bei der Abarbeitung eines Themas sein. An dieser Stelle kannst du die sicher schon Technologien - wie beispielsweise dem APF - ansehen, es sollte jedoch noch nicht in die Entscheidung einfließen. Alles andere wäre verfrüht und würde dich später in deiner Handlungsfreiheit deutlich einschränken.

Zitat:
APF scheint mit einigem mehr an Aufsatz zu kommen, als ich brauche und dabei bin ich mir unsicher ob der Mehraufwand des Einarbeitens in APF sich dem Nutzen gegenüber rechtfertigen kann ...
Das APF besitzt einige Dinge mehr, als die genannten, jedoch ist es für maximale Handlungsfreiheit ausgelegt und möchte dich eben nicht einschränken. Das wirst du vor allem bei der Weiterentwicklung deiner Software merken, denn dort ist man dann oft froh, dass noch ein weiteres Untertemplate oder ein weiteres Modul keinen riesigen Aufwand generiert. Sofern du zunächst vor der möglichen Komplexität zurückschreckst, gibt es viele gute Leute im Forum, die dir die Funktion des APF gerne erklären. Das aber nur am Rande.

Zitat:
Vorerst hab ich gleich Feierabend, das Problem lass ich mir nochmal intensiv durch den Kopf gehen und mich heute Abend nochmal melden - gesetzt den Fall du (oder auch jemand anderes) hat noch einen entscheidenden Einfall / Ratschlag fuer mich - immer her damit.
Ich kann dir an dieser Stelle nur nochmal ans Herz legen, dir ein Softwaredesign - das muss ja kein super komplexes UML sein, sondern es reichen ein zwei Diagramme und einiges an Text dazu - auszudenken. Alles andere (eingesetzte Technologie, konkrete Implementierung, ...) ist dann quasi eine konsequenz des Designs. Nimm dir hier einfach mal den oben verlinkten Artikel nochmal zur Hand und versuche die Schritte 1:1 auf dein Problem zu adaptieren. Sofern du nicht weiterkommst, helfe ich/helfen wir hier gerne.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 17.11.2009, 15:04  
Neuer Benutzer
 
Registriert seit: 12.11.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
phil9r befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für die Hilfestellungen.

Die Grafiken und Abläufe habe ich 1:1 versucht abzu"drucken" vom Gästebuch - bereits als du mir den Link geschickt hast.

Ich kam leider arg ins Schwanken was die Realisierung anging, vor allem da der Kunde nocheinmal ganz andre Anforderungen erstellt hat, die mich wohl oder uebel dazu draengen from scratch zu pogrammieren - werde aber heute Abend hier einmal meine bisherigen Ergebnisse posten sowie die neuen Anforderungen ...

=)
phil9r ist offline   Mit Zitat antworten
Alt 18.11.2009, 09:33  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Würde mich auch interessieren.
xm22 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Scriptangebot IV Content Management System Master IV Scriptbörse 0 06.10.2009 15:09
Fehler beim kompilieren von php 5.2.9 malio Server, Hosting und Workstations 11 05.06.2009 18:40
[Erledigt] Login System mit Registrierung xstefxanx PHP Tipps 2009 9 31.03.2009 16:33
login system, logout timer superfutzi PHP Tipps 2008 14 28.12.2008 12:30
Mysql LoginScriptzu MySqli LoginScript lithium PHP Tipps 2008 27 17.11.2008 19:48
Login System matii PHP Tipps 2008 6 16.04.2008 11:35
Login System Probleme ! 7Style PHP Tipps 2008 2 07.01.2008 13:55
Problem mit meinem Login System DJ Nuno PHP Tipps 2008 9 16.10.2007 16:44
Etwas komplexerer Login --> Keine Angst, Suche benutzt dethlef14 PHP Tipps 2006 7 02.10.2006 00:35
Sicheres Login System? PHP Tipps 2006 11 14.03.2006 15:05
phpBB Loginscript in eigenes Login Script einbinden 2wuck PHP Tipps 2007 4 19.12.2005 23:10
Login System für die eigene HP? Datenbanken 1 05.10.2005 19:48
[Erledigt] Login, LogIn, Anmelden, Einloggen -> ??? Off-Topic Diskussionen 20 14.07.2005 11:01

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
jquery datenbankzugriff, php login datenbankzugriff, loggen von datenbankzugriffen, php datenbankzugriff mit filter, smarty datenbankzugriff, html login erstellen mit datenbankzugriff, uml datenbankzugriff, smarty datenbank zugriff, tmp-system, php datenbankzugriff in mehreren klassen, template klasse php datenbank zugriff, uml datenbankzugriffe, gutes softwaredesign wie datenbankzugriff, datenbankzugriffe loggen, php login system über csv, iquery datenbankzugriff, php login mit datenbankzugriff, domänenmodell login, php klasse datenbankzugriff, allgemeiner ablauf bei datenbankzugriff mit php

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:36 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum