php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 30-01-2008, 11:12
kaguya
 Newbie
Links : Onlinestatus : kaguya ist offline
Registriert seit: Apr 2004
Beiträge: 132
kaguya ist zur Zeit noch ein unbeschriebenes Blatt
kaguya eine Nachricht über ICQ schicken
Standard [OOP] MVC und Performance

Hallo,

ich bin gerade dabei die Architektur einer bestehenden Software die ich seit Jahren entwickel komplett auf PHP5 und MVC umzustellen, vorher war es mehr nur eine VC Architektur

Dabei hätte ich eine Frage zum Front Controller. Bisher habe ich es so gemacht das jede Action quasi in einer eigenen Datei ist, ursprünglich aus Performance-Gründen da ich mir dachte es sei ja unnütz alle Actions jedesmal zu laden wenn man ohnehin nur eine aufruft.

Ich habe mir kürzlich auch mal das Zend Framework genauer angesehen und da ist mir aufgefallen das es quasi nur einen ActionController für ein ganzes "Modul" gibt und frage mich daher nun ob das performancetechnisch überhaupt einen Unterschied macht ob ich alle Actions zu einem Modul in einen Controller habe oder für jede Action einen eigenen Controller nutze, so wie ich es jetzt tue.

Mittlerweile denke ich dass das ganze übersichtlicher wäre wenn ich alle Actions in einem Modulcontroller habe nur weiss ich eben nicht ob die Übersichtlichkeit den Performanceverlust rechtfertigt, sofern es überhaupt einen gibt.

Wie macht ihr das?
Mit Zitat antworten
  #2 (permalink)  
Alt 30-01-2008, 12:39
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard Re: [OOP] MVC und Performance

Zitat:
Mittlerweile denke ich dass das ganze übersichtlicher wäre wenn ich alle Actions in einem Modulcontroller habe nur weiss ich eben nicht ob die Übersichtlichkeit den Performanceverlust rechtfertigt, sofern es überhaupt einen gibt.
Der Sinn von MVC liegt ja eher in der Übersichtlichkeit als in der Performance. Außerdem schätze ich den Performanceverlust - wenn überhaupt - sehr gering ein. Pack das lieber in eine Klasse, dann kannst du auch verschiedene Aktionen einfacher miteinander verbinden, indem du entsprechende Methoden aufrufst. Das Einbinden entsprechender Dateien um diese Aktion auszuführen ist da doch etwas unsauberer.
Mit Zitat antworten
  #3 (permalink)  
Alt 30-01-2008, 12:42
kaguya
 Newbie
Links : Onlinestatus : kaguya ist offline
Registriert seit: Apr 2004
Beiträge: 132
kaguya ist zur Zeit noch ein unbeschriebenes Blatt
kaguya eine Nachricht über ICQ schicken
Standard

da hast du wohl recht, und wenn man sich anguckt was allein Smarty alles einbindet sind die paar Controller Methoden wohl nicht wirklich schlimm.

Wobei ich Smarty in der aktuellen Version auch rauswerfen werde und gegen vlib ersetze.
Mit Zitat antworten
  #4 (permalink)  
Alt 30-01-2008, 12:54
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Ich kenne vlib jetzt nicht, ich würde Smarty aber nicht unbedingt als gutes Beispiel nehmen
Der Grundgedanke bei der OOP entspricht aber generell immer eher der Übersichtlichkeit und Modularisierung. Performance kannst du anschließend einbauen, in dem du beispielsweise entsprechende Daten cachst oder deinen PHP-Code compilierst.
Mit Zitat antworten
  #5 (permalink)  
Alt 30-01-2008, 12:58
kaguya
 Newbie
Links : Onlinestatus : kaguya ist offline
Registriert seit: Apr 2004
Beiträge: 132
kaguya ist zur Zeit noch ein unbeschriebenes Blatt
kaguya eine Nachricht über ICQ schicken
Standard

ja, mittlerweile sehe ich das auch so. Der Gewinn was Übersichtlichkeit und Wartbarkeit angeht wiegt den Performanceverlust locker auf und da gibt es wie du schon sagst genügend andere Möglichkeiten.

Trotzdem ist Smarty mir mittlerweile zu aufgebläht, auch wenn es die templates compiliert, da ich aber aus bestimmten Gründen unbedingt eine Template Engine einsetzen will habe ich mich für vlib Template entschieden, soll wohl sehr gut sein.

Danke für deine Meinung, dann werde ich das so machen.
Mit Zitat antworten
  #6 (permalink)  
Alt 30-01-2008, 13:02
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
habe ich mich für vlib Template entschieden
mal an xsl gedacht? ist imho das einzige, dass den namen templatesystem bei php wirklich verdient. alles andere ist in meinen augen nur pseudo.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #7 (permalink)  
Alt 30-01-2008, 13:07
kaguya
 Newbie
Links : Onlinestatus : kaguya ist offline
Registriert seit: Apr 2004
Beiträge: 132
kaguya ist zur Zeit noch ein unbeschriebenes Blatt
kaguya eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Kropff
mal an xsl gedacht? ist imho das einzige, dass den namen templatesystem bei php wirklich verdient. alles andere ist in meinen augen nur pseudo.
gedacht ja, habe da allerdings 0 praktische Erfahrung, wüsste nichtmal wie so ein "template" dann aussieht und ich denke die Designer die, die Layouts für mich umsetzen auch nicht und genau das ist das Problem.

Ich weiss das eine Template Engine eigentlich unnötig ist, trotzdem ist das erstellen der templates für "nicht Programmierer" immernoch einfacher mit einer template Engine.
Außerdem gibt man dem Designer ohne Template Engine die Möglichkeit die komplette PHP Funktionalität in den templates zu nutzen, was wieder mehr Fehler oder im schlimmsten Fall Sicherheitslücken bedeuten kann.
Aus Erfahrung will ich es den "HTML Leuten" so einfach und simpel machen wie möglich weil ich wenig Lust habe jedes template später nochmal zu bearbeiten weil irgendwas falsch gemacht wurde.
Mit Zitat antworten
  #8 (permalink)  
Alt 30-01-2008, 13:34
Hopka
 PHP Expert
Links : Onlinestatus : Hopka ist offline
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.172
Hopka ist zur Zeit noch ein unbeschriebenes Blatt
Hopka eine Nachricht über ICQ schicken
Standard

Bei MVC muss man sich immer vor Augen halten, dass das Pattern nicht ursprünglich für die Web-Entwicklung geschaffen wurde.
Wenn du also einen Front-Controller in der Form einsetzt, dass er die URL auswertet und dann entscheidet, welche Scripte er lädt, dann hat das natürlich einen kleinen Einfluss auf die Performance, aber man muss auch noch viele weitere Aspekte bedenken (was ist z.B. wenn du mal eine Datei direkt, also nicht über den Front-Controller aufrufen willst?). Im Grunde tut er dann aber nicht viel mehr, als der Web-Server - und der ist auf solche Sachen spezialisiert. Es ist nicht verkehrt, den Web-Server als eine Art Front-Controller einzusetzen. Du hast ja immer noch die Möglichkeit, in bestimmten Ordnern oder Scripten Page-, Action-, oder Modul-Controller (oder wie auch immer du sie nennst) in PHP zu realisieren. Je nach dem was du unter einem Modul verstehst, kann es durchaus Sinn machen, einen Controller pro Modul zu haben oder auch mehrere Controller pro Modul.

Es gibt dabei nicht die eine, richtige Lösung.

Was ich jedoch problematisch finde ist, dass MVC auf die meisten Web-Anwendungen einfach nicht passt. Und wenn man es erst mit irgendwelchen Kunstgriffen passend machen muss, dann behindert das Ganze die Entwicklung mehr, als dass es sie fördert. Und dann sollte man Abstand davon halten.

Man darf bei der Verwendung von Design-Patterns nicht hingehen und sagen "OK, hier habe ich ein Pattern, wo baue ich das bei mir ein?". Wenn man ein Problem lösen will, muss man sich Fragen, welches Pattern darauf passt - und wenn keins passt sollte man auch keins benutzen.


Zitat:
Original geschrieben von Kropff
mal an xsl gedacht? ist imho das einzige, dass den namen templatesystem bei php wirklich verdient. alles andere ist in meinen augen nur pseudo.
Bleibt nur die Frage, ob man mehr Wert auf den Namen oder auf die Benutzbarkeit legt. Und XSL(T) ist glaube ich für die meisten Leute viel zu kompliziert.

P.S.: Ist dieser Thread nicht mehr ein Brainstorming?
__________________
hopka.net!
Mit Zitat antworten
  #9 (permalink)  
Alt 30-01-2008, 13:43
kaguya
 Newbie
Links : Onlinestatus : kaguya ist offline
Registriert seit: Apr 2004
Beiträge: 132
kaguya ist zur Zeit noch ein unbeschriebenes Blatt
kaguya eine Nachricht über ICQ schicken
Standard

@hopka

Hm, ich finde das MVC Pattern für Web Anwendungen durchaus geeignet, auch in meinem speziellen Fall denke ich das es die beste Lösung ist was die Architektur angeht.

Irgendeine Art Front-Controller wird ja jeder integriert haben, ob nun bewusst oder unbewusst, OOP oder prozedural, aber irgendwie hat das sicherlich jeder.

Mir ging es einfach nur darum das ich aktuell zb pro Modul ein Verzeichnis habe, darin dann für jede Action einen Controller (Beispiel forum: neuestopic, neueantwort, beitrag löschen etc) und so halt nur der Controller Code eingebunden wird der am Ende auch genutzt wird.

Nur sehe ich es in letzter Zeit öfter das es zb einen ForumController gibt wo alle diese Actions in einer Datei implementiert sind, dh also alle Actions für das aktuelle Modul geladen werden auch wenn nur eine ausgeführt wird.

Performancetechnisch sicherlich nachteilig, meine Frage ob man das überhaupt merkt? Weil die Übersichtlichkeit und Wartbarkeit würde es schon verbessern, nachdem ich jetzt 2 Jahre mit der ersten Variante gearbeitet habe gibt es doch teilweise sehr viele einzelne Dateien wo auch teilweise nur wenige Zeilen Code drinsteht und das ist irgendwann nicht mehr wirklich Übersichtlich.

Aber Propel wird mich vermutlich deutlich mehr Performance kosten als diese Controller Geschichte und da ist es mir auch egal weil der Nutzen überwiegt.

bzgl. Brainstorming, da hast du wohl recht, passt da wohl besser.
Mit Zitat antworten
  #10 (permalink)  
Alt 30-01-2008, 14:00
kaguya
 Newbie
Links : Onlinestatus : kaguya ist offline
Registriert seit: Apr 2004
Beiträge: 132
kaguya ist zur Zeit noch ein unbeschriebenes Blatt
kaguya eine Nachricht über ICQ schicken
Standard

ich habe noch eine andere MVC Frage die unter anderem mit der Performance zutun hat.

Angenommen ich habe einen UserController wo die methode showProfile implementiert ist um ein Profil anzuzeigen. Dieser Controller instanziiert nun das UserModell das durch Propel generiert wurde und um einige Methoden erweitert wurde.
Ist es nun im Sinne des MVC Patterns dieses Propel UserModel Objekt an die View zu übergeben ? Schliesslich kann ich dann im Template direkt per getXYZ alle Userdaten abrufen die ich in der View brauche.

"Darf" man das so machen oder sollte man dann für den User noch eigene Klassen haben (die aber ja im Prinzip sowieso die gleiche Funktionalität implementieren würden wie das UserModel das Propel schon generiert hat.

Oder ist es generell perfomanetechnisch eine Sünde mit Objekten innerhalb der View zu arbeiten ?

Viele Fragen, aber ich will mich nicht in einem Jahr ärgern das ich etwas falsch gemacht habe
Mit Zitat antworten
  #11 (permalink)  
Alt 30-01-2008, 22:50
ModestLife
 Registrierter Benutzer
Links : Onlinestatus : ModestLife ist offline
Registriert seit: Sep 2007
Beiträge: 105
ModestLife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Aber Propel wird mich vermutlich deutlich mehr Performance kosten als diese Controller Geschichte und da ist es mir auch egal weil der Nutzen überwiegt.
Bevor du Propel nimmst, wirf noch nen Blick auf www.phpdoctrine.org. :-)
Mit Zitat antworten
  #12 (permalink)  
Alt 30-01-2008, 23:00
kaguya
 Newbie
Links : Onlinestatus : kaguya ist offline
Registriert seit: Apr 2004
Beiträge: 132
kaguya ist zur Zeit noch ein unbeschriebenes Blatt
kaguya eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von ModestLife
Bevor du Propel nimmst, wirf noch nen Blick auf www.phpdoctrine.org. :-)
Habe ich mir auch schon angesehen, Propel 1.3 mit PDO soll aber deutlich schneller sein, sogar schneller als Doctrine.
Bei Doctrine bin ich mir nicht sicher ob da auch die Model Klassen generiert werden oder nur der SQL Code? Da nimmt einem Propel ja schon einiges an Arbeit ab, macht Doctrine das genauso?

Wie siehts mit dem Pear Paket DataObjects aus? Ist das auch eine Alternative oder eher nicht?
Mit Zitat antworten
  #13 (permalink)  
Alt 30-01-2008, 23:10
ModestLife
 Registrierter Benutzer
Links : Onlinestatus : ModestLife ist offline
Registriert seit: Sep 2007
Beiträge: 105
ModestLife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Bei Doctrine bin ich mir nicht sicher ob da auch die Model Klassen generiert werden oder nur der SQL Code?
Jap, Doctrine kann das. Und zwar zig Mal einfacher als Propel (ohne Phing und Konsorten).

http://www.phpdoctrine.org/documenta...ting-databases
Mit Zitat antworten
  #14 (permalink)  
Alt 31-01-2008, 09:26
kaguya
 Newbie
Links : Onlinestatus : kaguya ist offline
Registriert seit: Apr 2004
Beiträge: 132
kaguya ist zur Zeit noch ein unbeschriebenes Blatt
kaguya eine Nachricht über ICQ schicken
Standard

Ah, das sieht wirklich gut aus, das macht die Entscheidung wieder schwieriger
Ist Doctrine denn auch wirklich stabil ? Version 0.10 macht mich da etwas stutzig...was man so liest soll es ja besser sein als Propel, aber auch besser als Propel 1.3 ?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:25 Uhr.