php.de

Zurück   php.de > php.de Intern > Off-Topic Diskussionen

Off-Topic Diskussionen Mach mal Pause vom Programmieren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.12.2011, 14:52  
Neuer Benutzer
 
Benutzerbild von SimpleFramework
 
Registriert seit: 01.11.2011
Beiträge: 6
PHP-Kenntnisse:
Fortgeschritten
SimpleFramework befindet sich auf einem aufstrebenden Ast
Standard

Hast schon Recht mit den requires. Eigentlich sind die überflüssig, da es auch einen Autoloader gibt, der alle PHP-Dateien registriert. Das sie aber dennoch vorhanden sind, dient eigentlich nur der besseren Lesbarkeit des Codes. Man soll sehen, welche Klassen innerhalb des aktuellen Files benutzt werden. Ich finde sowas bei Java und auch C++ (wo es ja notwendig ist Referenzierte Bibliotheken und Dateien explizit anzugeben) sehr hilfreich, da gleich beim Lesen des Codes klar wird, welche weiteren Quellen genutzt werden und was man sich gg. noch anschauen muss, um den Code komplett zu begreifen.

Die Unterteilung in Haupt- und SubController ist doch eigentlich ganz praktisch, da du so innerhalb eines Controllers, der fachlich ein Thema abdeckt, anhand der aufgerufenen Methode unterschiedliche Logik ausführen kannst.

Beispiel: Man hat eine Seite gebaut, die Nachrichten anzeigt. Nun gibt es unterschiedliche Controller zum Laden von Nachrichten aus unterschiedlichen Themenbereichen (Sport, Politik, Börse, Wetter,...). Der Hauptcontroller lädt jeweils den Inhalt, der später in einem sehr großen, zentralen Bereich der gerenderten Seite angezeigt wird. Die Subcontroller laden "kleinen" Inhalt, der in kleineren Teilbereichen der Ergebnisseite angezeigt wird.

Hat man beispielsweise als Hauptcontroller den PolitikController, so lädt dieser die Megaschlagzeilen, dass sich der Wulff 500.000 € von wem auch immer geborgt hat und dass in China ein Sack Reis fliegen gelernt hat. Diese Meldungen werden dann riesengroß im Hauptbereich der Seite angezeigt.
Ganz oben links in der Ecke befindet sich dann aber noch ein kleiner Bereich, der anzeigt, dass es in Berlin gerade 3 Grad kalt ist und dass es regnet.
Diese Infos kommen vom Wettercontroller, der als SubController aufgerufen wurde.
Wäre er als Hauptcontroller aufgerufen worden, so hätten die Wetterdaten den Hauptteil der Seite ausgemacht und diese wären viel umfangreicher ausgefallen als eben beschrieben. Beispielsweise hätte man das Reisewetter für alle wichtigen Urlaubsländer, die aktuellen Schneehöhen, Unwetterwarnungen, das Regenradar und was weiß ich noch alles anzeigen können.

Um nun innerhalb des Wettercontrollers zu wissen, welche Daten man laden muss, wäre es doch ganz praktisch zu wissen, ob man nun gerade als Haupt- oder SubController arbeitet. Und genau dafür gibt es die beiden Methoden process() und subProcess(). Da ich in jeder der beiden Methoden weiß, was der Controller gerade für eine Rolle spielt, ist es auch einfach entsprechend zu reagieren.

Das Argument, dass es doppelten Code bei diesen beiden Methoden geben könne, kann ich nicht gelten lassen. Es kann natürlich gut sein, dass ein Controller immer den gleichen Code ausführt, egal ob er Haupt- oder SubController ist. Da sollte man sich die Frage stellen, ob dieser Controller denn überhaupt als SubController genutzt wird oder eben nicht. Wenn nicht, dann zwingt Simple Framework den Entwickler nicht, die subProcess() Methode zu implementieren. Man kann sie einfach weglassen.
Falls man sie aber doch implementieren will oder aus irgend einem Grund muss, es aber klar ist, dass dort der gleiche Code wie in der process() Methode ausgeführt werden muss, kommt dann halt einfach ein $this->process() als einziger Code in die subProcess() Methode und das Problem ist gelöst.
__________________
Beste Grüße
Andreas Ermrich
http://www.simple-framework.de
SimpleFramework ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 22.12.2011, 14:55  
Erfahrener Benutzer
 
Registriert seit: 26.11.2008
Beiträge: 264
dsentker befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Wäre er als Hauptcontroller aufgerufen worden, so hätten die Wetterdaten den Hauptteil der Seite ausgemacht und diese wären viel umfangreicher ausgefallen als eben beschrieben.
Nein, sorry, das ist für mich kein Grund den Controller in zwei Teile zu splitten. Wie großflächig oder umfangreich bestimmte Bereiche auf einer Seite ausgegeben werden, ist Sache der View, nicht des Controllers. Wie gesagt, der Controller ist nur eine vermittelnde Instanz und schert sich nicht um die Präsentation.

Zitat:
Hast schon Recht mit den requires. Eigentlich sind die überflüssig, da es auch einen Autoloader gibt, der alle PHP-Dateien registriert. Das sie aber dennoch vorhanden sind, dient eigentlich nur der besseren Lesbarkeit des Codes.
Dafür gibt es Namespaces. Man sieht oben am Kopf gleich, wo die angeforderten Klassen herkommen (sofern, wie üblich, die Ordnerstruktur mit der Namespacestruktur einhergeht).
__________________
dsentker ist offline   Mit Zitat antworten
Alt 22.12.2011, 15:44  
Neuer Benutzer
 
Benutzerbild von SimpleFramework
 
Registriert seit: 01.11.2011
Beiträge: 6
PHP-Kenntnisse:
Fortgeschritten
SimpleFramework befindet sich auf einem aufstrebenden Ast
Standard

Das mit den Namespaces ist wohl richtig. Da gebe ich dir uneingeschränkt Recht. Bei den Controllern allerdings werden wir wohl nicht übereinkommen. Nur soviel. Das sich Controller nicht um die Views kümmern sollten ist korrekt. Das tun sie in meinem Fall auch nicht. Die View weiß nichts davon, dass es im vorgelagerten Controller eine process() und/oder subProcess() Methode gibt. Muss sie auch nicht wissen. Sie zeigt lediglich die ihr bereitgestellten Daten an. Woher diese kommen ist aber nebensächlich.

Zitat:
Wie gesagt, der Controller ist nur eine vermittelnde Instanz und schert sich nicht um die Präsentation.
Stimmt. Aber was vermittelt er denn? Oder besser, wie macht er das? Er vermittelt über Programmlogik. In Abhängigkeit von bestimmten "äußeren" Bedingungen gilt es auf bestimmte Weise zu handeln. Und genau dass ist es, was die beiden von mir eingeführten Methoden machen. Sie erleichtern es dem Controller seinen vermittelnden Code in dem dem jeweiligen Kontext entsprechenden Rahmen auzuführen.
__________________
Beste Grüße
Andreas Ermrich
http://www.simple-framework.de
SimpleFramework ist offline   Mit Zitat antworten
Alt 23.12.2011, 20:12  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
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

Zitat:
Da gebe ich dir uneingeschränkt Recht. Bei den Controllern allerdings werden wir wohl nicht übereinkommen. Nur soviel.
Hier stimme ich dsentker 1:1 zu. Eine Trennung ist hier nicht sinnig, denn eine Composite-Struktur von MVC-Elementen sollte sich durch die Struktur selbst und nicht durch unterschiedliche process-Methoden definieren. Ist ein Knoten ein Sub-Knoten, so ist er das, weil er im Baum ein Kind eines anderen ist und nicht dadurch dass du subProcess() aufrufst! Sollte das doch dein Ernst sein, implementierst du effektiv kein HMVC sondern eine zweistufige, begrenzte Struktur.

Mehrere Methoden pro Controller machen nur dann Sinn, wenn du unterschiedliche Zeitpunkte hast, zu denen ein Controller aufgerufen wird. Im Timing-Model des APF-Page-Controller könnte das beispielsweise eine Methode in der Analyse- und eine während der Transformations-Phase sein. In deinem Kontext kann ich so etwas nicht erkennen.

Zitat:
Da ich in jeder der beiden Methoden weiß, was der Controller gerade für eine Rolle spielt, ist es auch einfach entsprechend zu reagieren.
Auch hier gilt: ein Controller bzw. sein kompletter MVC-Knoten erhält durch seine Umwelt seine Bedeutung. Es verhält sich wie im täglichen Leben. Nur dadurch dass ich Mitmenschen um mich herum habe, unterscheide ich mich durch die ein oder andere Eigenschaft von diesen. Gäbe es nur mich, wäre "Unterschied" ein nicht definierbarer Begriff.

Zitat:
Der 2. Link hingegen funktioniert. Wenn man da mal von den vollkommen sinn-freien, dafür aber umso aufgeblaseneren Kommentaren des Superposters nikosch absieht, steht da schon einiges Nützliches drin. Insbesondere du hast auch etliche tolle Hinweise gegeben.
Ich bitte nikosch mit genauso viel Respekt zu begegnen, wie du dir das selbst wünschst!

Zitat:
Eine weitere Möglichkeit Controllerzuweisungen dynamisch während der Laufzeit vorzunehmen, gibt es mit Servicemethoden, die allen Controllerklassen zur Verfügung stehen.
Mit dieser Vorgehensweise bist du natürlich auf "programmatische Konfiguration" festgelegt.

Zitat:
Damit kann man die in der Konfiguration vordefinierten Zuweisungen nach Belieben neu setzen und ändern.
Bin ich also doch abhängig von der Konfiguration?

Zitat:
Dies gilt auch über den aktuellen Request hinaus, da die jeweils letzte gültige "Fassung" vor dem Ende des Request-Handlings über den Session-Manager gespeichert wird.
Welchen Mehrwert bringt das ausser haufenweise Daten in der Session?

Zitat:
Die Möglichkeit der Konfiguration über URL-Parameter habe ich von Anfang an ausgeschlossen, da dies meiner Meinung nach dem User nicht zumutbar ist. Es ist lediglich ein Parameter zur Angabe des für den aktuellen Request zu benutzenden Hauptcontrollers vorgesehen.
Als Hersteller eines Frameworks ist "Zumutbarkeit" IMHO anders zu bewerten und darf einer generisch einsetzbaren Lösung nicht im Weg stehen. Damit nimmst du dir beispielsweise komplett die Möglichkeit einer statischen Url eine konstante Repräsentation zuzuschreiben. Für Bookmarks und Suchmaschinen ist Zustandslosigkeit von Seiten enorm wichtig. Garantiert das deine Applikation nicht - in diesem Fall durch Session-Speicherung - kann der Aufruf einer Url mit frischer Session zu völlig unerwarteten Ergebnissen führen. Für mich ein NOGO.
__________________
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
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
Business Support Spezialist (m/w) / Schwerpunkt Reporting JobAmbition Gewerblich 1 02.11.2011 18:59
htaccess läuft oder doch nicht? SteiniKeule PHP Einsteiger 5 28.11.2010 23:39
Mysql fehler bei externen Zugriff SteiniKeule Datenbanken 4 18.06.2010 12:54
OpenID und XAMPP nanatsusaia PHP Tipps 2009 2 20.11.2009 13:21
Probleme mit Bildgenerierung swsche PHP Tipps 2009 8 31.10.2009 14:49
Fehler beim kompilieren von php 5.2.9 malio Server, Hosting und Workstations 11 05.06.2009 18:40
Was mime_content_type übergeben dethlef14 PHP Tipps 2006 16 11.10.2006 17:35
MySQL mit phpMyAdmin verwalten Datenbanken 20 13.04.2006 11:13
PHP-Safe-Mode Configuration mit Xampp - Scripts laufen nicht DerN8WaechterX PHP Tipps 2006 7 27.01.2006 00:41
Problem mit php/mysql PHP Tipps 2005-2 29 10.08.2005 14:33
[Erledigt] Seite wird nicht angezeigt, untersch. Fehler bei IE/FF/Safar PHP-Fortgeschrittene 19 31.05.2005 14:52
[Erledigt] Error Mail() function PHP Tipps 2005 3 14.04.2005 03:32
[Erledigt] warum kann nicht SVG files laden? PHP Tipps 2005 16 09.03.2005 14:05
[Erledigt] Warning: filemtime() [function.filemtime]: stat failed for PHP-Fortgeschrittene 12 25.02.2005 19:44
PHP 4.3.1 "updaten" auf 5.0.0 Server, Hosting und Workstations 21 13.08.2004 12:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
simple framework mvc ermrich

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