PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Entwicklung und Softwaredesign (http://www.selfphp.de/forum/forumdisplay.php?f=14)
-   -   Startschwierigkeiten bei OOP-Webentwicklung (http://www.selfphp.de/forum/showthread.php?t=25271)

klausguenter 21.05.2014 02:36:55

Startschwierigkeiten bei OOP-Webentwicklung
 
Hallo zusammen,

ich möchte gerade ehrenamtlich für einen Verein eine Online-Mitgliederverwaltung programmieren.
Diese soll objektorientiert sein, da sie ständig erweiterbar / anpassbar sein soll.

Grundlegende Erfahrungen habe ich bereits in PHP (prozedural), sowie in Java objektorientiert.
In PHP habe ich also noch keine Erfahrungen in OOP.

Probleme sehe ich derzeit eigentlich weniger in der Programmierung, denn bis auf die Syntax ist das ja ähnlich wie in Java, und für die Syntax hab ich Bücher und Suchmaschinen.

Ich habe aber derzeit ein Problem beim Entwurf.
Vorgestellt habe ich mir eine 3-Schichten-Architektur, bei der ich z.B. auch mal das Frontend austauschen kann, oder ein weiteres hinzufügen kann.
(Anfangs soll die Seite für Webbrowser entwickelt werden, später soll es einige Funktionen vielleicht auch mal auf dem Smartphone geben)
Vielleicht soll später auch mal die Datenbank ausgetauscht werden, oder von relational auf objektrelational umgestellt werden - ich will mir also alle Optionen für die Zukunft offen lassen.
Erstmal soll es aber ein Onlineportal werden, dass über Webseiten genutzt wird und die Daten in einer MySQL-Datenbank speichert.
Die Grundfunktionen sollen auch einfach sein: Mitgliederlisten angucken, filtern, Mitglieder hinzufügen, löschen usw. - nichts wildes also.

Probleme sehe ich eigentlich weniger in der eigentilchen Geschäftslogik oder der Datenspeicherung.
Probleme sehe ich eher im Bereich: Präsentationsschicht: Macht man diese Schicht sinnvollerweise auch OOP, oder nicht? Falls ja: wie?
Ich weiss gar nicht, wie ich die 10 Seiten, die ich im Kopf habe in ein OOP-Modell abstrahieren soll. Packt man dann den ganzen HTML und CCS Code in Klassen??? Ich sehe darin erstmal nur einen gewaltigen Aufwand, aber keinen wirklichen Sinn.
Ein weiteres Problem sehe ich in der Verbindung dieser 3 Schichten - ich könnte mir vorstellen, dass es Sinn macht die Schnittstellen / Verbindungspunkte zwischen Präsentationsschicht und Logikschicht sowie zwischen Logikschicht und Datenhaltungsschicht möglichst zu generalisieren, damit man die Schichten auch mal austauschen kann, wie oben schon erwähnt wurde.
Dafür braucht es ja auch diverse Klassen, die dies managen.

Ich suche schon die ganze Zeit nach irgendwelchen Beispielen, wo man mal ein komplettes Projekt in UML und Code sehen kann.
Oder ein Buch, wo diese OOP-Planung und die Umsetzung in UML oder Code dann an einem Beispielprojekt erklärt wird.

Gibt es zu diesem Thema vernünftige Portale (vorzugsweise in deutsch) und Bücher, die ihr empfehlen könnt?
wenn ihr eine Webseite kennt, wo in einer Art Tutorial ein solches Projekt mal beispielhaft durchgedacht wird, wäre ich auch für sowas dankbar.
Und - wie bereits gefragt - wie würdet ihr die Präsentationsschicht angehen - auch OOP, oder die dann doch eher prozedural?
Kann man die 3 Schichten überhaupt unterschiedlich programmieren, oder stehen da dem guten Programmierer die Haare zu Berge?

Fragen über Fragen... face-smile
Vielen Dank vorab für eure Hilfe!

DokuLeseHemmung 21.05.2014 10:08:08

AW: Startschwierigkeiten bei OOP-Webentwicklung
 
Hmm...
Schau dir mal die fertigen Frameworks an...
Die haben alles was du brauchen wirst.
1. ZF2 (Zend Framework2)
2. Symfony
3. Flow3
Es gibt noch mehr brauchbare

Zitat:

Vielleicht soll später auch mal die Datenbank ausgetauscht werden, oder von relational auf objektrelational umgestellt werden - ich will mir also alle Optionen für die Zukunft offen lassen.
Am einfachsten zu verwenden scheint mir das "Redbean ORM" zu sein. Ich setze es zur Prototypenentwicklung ein.
"Doctrine2" geht sie Sache von anderer Seite an.


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:43:41 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.