php.de

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

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

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.08.2011, 09:35  
Neuer Benutzer
 
Registriert seit: 02.04.2009
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
ViperNeo befindet sich auf einem aufstrebenden Ast
Standard Großprojekt - Brain-Storming zur Architektur

Hallo Leute,

ich stehe mit einem kleinen Team aus 3 Entwicklern zurzeit vor einem größeren Projekt. Das ganze wird ein größeres Portal, dass insgesamt 6 verschiedene Bereiche beherbergen wird. Näher ins Detail kann ich nicht genau eingehen, ich hoffe ich schaffe es aber im weiteren Verlauf rüber zu bringen wo mein Problem ist.

Und zwar habe ich früher sehr viel in PHP entwickelt, auch größere Anwendungen zu einer Zeit wo es noch nicht so überladene Frameworks gab. Da hat man sich ein paar Klassen geschrieben und irgendwie drauf los programmiert und am Ende kam was anständiges dabei raus. Allerdings war da der Wartungsaufwand doch meistens etwas höher als geplant^^

Nun habe ich die letzten Jahre nur noch Desktopentwicklung gemacht und bin sozusagen etwas raus aus der Web-Entwicklung mit PHP. Die Sprache selbst beherrsche ich noch, mir fällt zurzeit aber das umdenken etwas schwer wie das im Web so abläuft (Request, Response etc.)...

Nun sind wir auf der Suche nach einem passenden Konzept, wie man eine recht große Seite aufbauen könnte. Ich habe mir nun zahlreiche Frameworks angesehen, kann mich aber mit dem zurzeit beliebten MVC Framework nicht so richtig anfreunden. Für meinen Geschmack bietet das Konzept mir zu wenig Freiraum im Anzeigen von dynamischen Inhalten. HMVC wäre eine Alternative, aber irgendwie ist mir das einfach zu kompliziert aufgebaut. Da muss ich ständig mit Kanonen auf Spatzen schießen um ne Liste der Benutzer anzuzeigen (View anlegen, Controller anlegen etc. pp.)...

Mich würde nun mal interessieren, wie ihr eure Großprojekte so aufbaut. Setzt ihr immer auf Frameworks? Ich möchte keine Grundsatzdiskussion über MVC oder Frameworks hier auslösen, mir ist bewusst das ein Framework zahlreiche Vorteile hat, genau wie MVC Vor- und Nachteile hat. Mich würde im allgemeinen einfach interessieren, was ich noch für Möglichkeiten habe das ganze aufzubauen. Früher hätte ich einfach drauf los gelegt, aber irgendwie bin ich zurzeit durch die Desktopentwicklung so vorbelastet und gedanklich eingefahren, dass ich keinen Einstieg finde, der mir beim programmieren Spaß bereitet....

Danke schonmal für Tipps, Anregungen und Hilfen

Beste Grüße
ViperNeo
ViperNeo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.08.2011, 12:34  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.020
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Ja, immer Framework und ja, immer (H)MVC. Eine Alternative wäre noch MVVM, aber das ist bei PHP doch eher unüblich und recht komplex.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline  
Alt 02.08.2011, 12:46  
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

Zitat:
und am Ende kam was anständiges dabei raus. Allerdings war da der Wartungsaufwand doch meistens etwas höher als geplant
Ist doch ein Widerspruch in sich..

Zitat:
Setzt ihr immer auf Frameworks?
Ich habe seit ewigen Zeiten kein Projekt mehr gehabt, das nicht auf einem Framework aufgesetzt hätte. Es ist genau die selbe Sache wie bei den anderen Diskussionen: Du musst von einem Framework nicht alles benutzen, aber es hat durchaus Vorteile, wenn Du ein - für den Anfang - überdimensioniertes Framework benutzt, dass allerdings schon alle Bestandteile beinhaltet, die Du mal brauchst.

Zitat:
Da muss ich ständig mit Kanonen auf Spatzen schießen um ne Liste der Benutzer anzuzeigen (View anlegen, Controller anlegen etc. pp.)...
Zitat:
und am Ende kam was anständiges dabei raus. Allerdings war da der Wartungsaufwand doch meistens etwas höher als geplant^^
Überleg mal, warum

Wenn es nicht gerade eine statische Website ist, für die man ein CMS benutzen kann oder eine wirklich kleine Applikation ohne Ambitionen, zu wachsen, dann natürlich kein Framework - sonst schon. Wie bereits gesagt: Ein Projekt unterliegt immer der "Gefahr", zu wachsen und wenn man dann von vorherein auf ein Framework setzt, hat man wesentlich bessere Karten.
xm22 ist offline  
Alt 02.08.2011, 19:41  
Benutzer
 
Registriert seit: 25.01.2011
Beiträge: 59
PHP-Kenntnisse:
Fortgeschritten
Renner befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Die Sprache selbst beherrsche ich noch, mir fällt zurzeit aber das umdenken etwas schwer wie das im Web so abläuft (Request, Response etc.)
Mit folgende Dingen solltest du anfangen:

http://de.wikipedia.org/wiki/Client-Server-Modell
http://de.wikipedia.org/wiki/Http


Zitat:
MVC Framework
Weder (H)MVC ist ein Framework noch ist es auf Serveranwendungen beschränkt und auf gar keinen Fall ist das eine Modeerscheinung:

http://de.wikipedia.org/wiki/Model_View_Controller
http://framework.zend.com/manual/de/...ontroller.html
Renner ist offline  
Alt 02.08.2011, 23:25  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 260
PHP-Kenntnisse:
Fortgeschritten
lcrash wird schon bald berühmt werden
Standard

(H)MVC ist kein in Beton gegossenes Architekturmodell, sondern eine Organisationsstruktur. Zu MVC kommen ja noch Service-Layer, Bibliotheken usw. hinzu.

Ich sehe gar nicht wie man ohne Framework und MVC (und ähnliche Konzepten) eine große Webseite erfolgreich weiterentwickeln will, es sei denn aus konzeptionellen Gründen eine Eigenimplementierung von GRUNDLEGENDEN Dingen nützlicher ist.

Die Code-Qualität kann auch in einem solchen Projekt leiden. Es gibt Organisatorische (Agile Softwareentwicklung, QA, Dokumentation usw), technische (PHPUnit, Agile Dokumentation, Selenium) und disziplinarische Methoden (Test-driven Devlopment, PHPCs, Code-Reports) um dem entgegen zu wirken. Letztlich obliegt es dem Team-Leiter das zu organisieren.

Aus dem Desktop-Bereich müsstest du solche Methoden gewöhnt sein, die gibt's auch im PHP-Umfeld.

Zitat:
> Da muss ich ständig mit Kanonen auf Spatzen schießen um ne Liste der Benutzer anzuzeigen (View anlegen, Controller anlegen etc. pp.)...
User wäre ein Model, was du sowieso brauchst. Mit Zend_Db müsste man dieses erst einmal erzeugen (leider bisher manuell) in Doctrine würde man das Model aus einer Yaml/XML/PHP-Datei erzeugen. Danach wäre es ein simple Action, welche einfach mit Zend_Paginator die Liste in Seiten aufteilt. Könnte man in 5 Minuten erledigt haben.
lcrash ist offline  
Alt 03.08.2011, 07:27  
Jens P.
Gast
 
Beiträge: n/a
Standard

Sofern ich programmiere, programmiere ich NUR noch mit Hilfe eines Frameworks!

http://adventure-php-framework.org/

Schau es dir mal an.
 
Alt 03.08.2011, 09:53  
Neuer Benutzer
 
Registriert seit: 02.04.2009
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
ViperNeo befindet sich auf einem aufstrebenden Ast
Standard

So, ich stimme euch größtenteils zu, ihr wisst schon, dass zum Beispiel Facebook ohne MVC auskommt?

Was spricht zum Beispiel dagegen ein Objektorientiertes Kernmodell zu schreiben, auf das ich Prozedural zugreife und mithilfe von zum Beispiel Smarty darstelle? Dann hätte ich halt für jede Seite eine eigene Datei, die prozedural den Content aufbaut und am Schluss mit Smarty raus haut. Um Code duplizierung hier zu vermeiden, kann man ja das meiste in andere Files kapseln, die bei bedarf includet werden. Sollte doch grundsätzlich machbar sein und auch übersichtlich.

Ich verstehe einfach nicht ganz, wie man in MVC ein sinnvolles View Management umsetzt. Ich will nicht kompliziert 10 Controller aufrufen müssen über neue Request, um verschiedene Boxen auf meiner Seite mit Leben zu füllen. Schreibe ihc alles in eine Controller Methode hab ich wieder Code-Duplizierung ohne Ende. Ich finde MVC hat schon riesen Vorteile, jedoch sehe ich gerade in der Ausgabe von komplexen GUIs große Schwächen was die Views anbelangt. Das ganze dann mit Subcontrollern aufzublasen halte ich wieder für zu komplex und mit Kanonen auf Spatzen geschossen.

Beispiel:

Controller Authentication Methode Login.

Eigentlich sollte diese Methode sich meiner Meinung nach nur um Sachen Login kümmern... Ich möchte aber auf meiner Seite noch einen News-Feed anzeigen, möchte die zuletzt aktivsten Benutzer anzeigen, möchte Informationen aus Katalogen anzeigen, eventuell Werbung einblenden. Wie würdet ihr das denn anstellen? Für jedes Einzelteil einen neuen Request an einen anderen Controller? Alles in der Login Methode abrufen und ins View blasen? Das ist glaueb ich zurzeit mein größtes gedankliches Problem....
ViperNeo ist offline  
Alt 03.08.2011, 10:07  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von ViperNeo Beitrag anzeigen
ihr wisst schon, dass zum Beispiel Facebook ohne MVC auskommt?
Und woher weißt du das? Ohne Quelle halte ich das erstmal für Bullshit.

Zitat:
Zitat von ViperNeo Beitrag anzeigen
Was spricht zum Beispiel dagegen ein Objektorientiertes Kernmodell zu schreiben, auf das ich Prozedural zugreife und mithilfe von zum Beispiel Smarty darstelle? Dann hätte ich halt für jede Seite eine eigene Datei, die prozedural den Content aufbaut und am Schluss mit Smarty raus haut. Um Code duplizierung hier zu vermeiden, kann man ja das meiste in andere Files kapseln, die bei bedarf includet werden. Sollte doch grundsätzlich machbar sein und auch übersichtlich.
Wenn du das richtig machst, nutzt du eigentlich auch MVC, wie schon gesagt wurde ist das ein Konzept auf hoher Abstraktionsebene welches in erster Linie Separation of Concerns auf GUI Ebene sicherstellen soll.

Smarty: View
Prezedurale Datei: Controller
OO Modell: Model

Zitat:
Zitat von ViperNeo Beitrag anzeigen
Eigentlich sollte diese Methode sich meiner Meinung nach nur um Sachen Login kümmern... Ich möchte aber auf meiner Seite noch einen News-Feed anzeigen, möchte die zuletzt aktivsten Benutzer anzeigen, möchte Informationen aus Katalogen anzeigen, eventuell Werbung einblenden. Wie würdet ihr das denn anstellen? Für jedes Einzelteil einen neuen Request an einen anderen Controller? Alles in der Login Methode abrufen und ins View blasen? Das ist glaueb ich zurzeit mein größtes gedankliches Problem....
Ich würde es wahrscheinlich mit View Centric HMVC angehen. Im obersten View wird bestimmt, welche Unter-Komponenten eingefügt werdne und ja, diese haben alle ihre eigenen Controller. Ich sehe aber auch nicht das Problem darin. Was du als "Neuer Request" bezeichnest ist doch nichts als ein Methodenaufruf. Das muss nicht kompliziert sein.
fab ist offline  
Alt 03.08.2011, 10:25  
Neuer Benutzer
 
Registriert seit: 02.04.2009
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
ViperNeo befindet sich auf einem aufstrebenden Ast
Standard

Bei Facebook lagen kurzzeitig mal Quellen offen, wer da mal reingeschaut hat weiß mehr

Ansonsten schaue ich wohl einfach mal wie ich herangehe... Danke soweit
ViperNeo ist offline  
Alt 03.08.2011, 10:29  
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

Zitat:
Ich will nicht kompliziert 10 Controller aufrufen müssen über neue Request, um verschiedene Boxen auf meiner Seite mit Leben zu füllen. Schreibe ihc alles in eine Controller Methode hab ich wieder Code-Duplizierung ohne Ende.
Zitat:
Wie würdet ihr das denn anstellen? Für jedes Einzelteil einen neuen Request an einen anderen Controller?
Ich habe mein Projekt mittlerweile auf Google-Code gehostet (Eigentlich nutze ich es bisher nur als Code-Repository). Damit habe ich versucht, die Aufrufe möglichst schlank zu halten. Allerdings fehlt da noch einiges an Dokumentation, wass jetzt langsam kommen soll. Aber vielleicht bietet es Dir etwas Inspiration für Dein Vorhaben: http://code.google.com/p/zn-php-framework/ Bei Fragen kannst Du Dich gerne an mich wenden.
Einen "Sub-Controller" (Nennt sich bei mir Node) lässt sich so einbinden:
PHP-Code:
echo $this->getNodeManager()->assembleNode('...')->run() 
Dabei werden keine weiteren Pseudo-Requests ausgeführt und behält man trotzdem volle Flexibilität.. Du kannst es Dir ja mal anschauen..

Nachtrag: Das APF, das Jens P. angesprochen hat, bietet einen ähnlichen Mechanismus an, allerdings auf der Basis von Taglibs.

Der Vorteil von Bootstrapping gegenüber Deiner Lösung ist, dass man _einen_ Einsprung in die Applikation hat und auch nur eine Stelle, wo wahrscheinlich alle Initialisierungen gemacht werden, ohne dass das in irgendwelchen Includes gemacht wird, wo man darauf achten muss, dass das nach einer Änderung auch noch in den ganzen Einsprungdateien hinhaut.
Weiterer Vorteil gegenüber Deiner prozeduralen Variante: Man hat wenig globale Variablen rum fliegen, was unbeabsichtigte Nebeneffekte reduziert.


EDIT: Und ja - momentan läuft die Test-Applikation meines Frameworks nicht. Ist leider der Hektik und einem Fehler beim letzten Commit geschuldet. Aber es soll auch nur Anschauungszwecken dienen

Geändert von xm22 (03.08.2011 um 10:48 Uhr).
xm22 ist offline  
Thema geschlossen


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
neuartiges Großprojekt sucht genau Dich! tyfoo Sonstige 0 07.06.2011 09:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mvc vor nachteile, software architektur großprojekte, php projekt architektur, großprojekte mit php, php framework für großprojekte, php framework großprojekte, mvc frameworks vorteile nachteile, projekt storming, storming php, großprojekt architektur, php architektur, komplexe php architektur

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:37 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