Deprecated: Function split() is deprecated in /var/www/web722/html/lemme.at/webcode/plugins/serendipity_event_metadesc/serendipity_event_metadesc.php on line 101

MVC mit PHP - Ein neues Tutorial

Weil mich die Arbeit mit dem MVC-Joomla-Framework so fasziniert hat, habe ich ein MVC mit PHP-Tutorial geschrieben, dass beschreibt, wie man das MVC-Pattern ganz einfach mit PHP implementieren kann.

Feedback, Fragen und Diskussion zu dem Tutorial ist hier in den Kommentaren möglich und erwünscht ;-)

 Natürlich habe ich mich von anderen Inspirieren lassen, vor allem von folgenden Blogs und Artikeln:

 Hier gehts zum Tutorial

Trackbacks

  1. Brati-Blog hilft bei MVC-Tutorial

    Wie ich heute in meiner Statistik gesehen habe, hat ein anderer PHP'ler mein MVC-Tutorial als Basis für ein eigenes Tutorial verwendet, welches zumindest strukturell hervorragend gemacht wurde. Es ist VIEL übersichtlicher als bei mir, was sicherlich an der ...

  2. Super MVC Tutorial

    Schon lange habe ich versucht in PHP auf die etwas Fortschrittliche Methode des MVC (Model, View, Controll) zurück zu greifen. Diese Methode hat den Vorteil, das man auch größere Projekte relativ einfach Verwalten kann. Allerdings hatte ich irgendw...

Kommentare

Ansicht der Kommentare: (Linear | Verschachtelt)

  1. Radhad schreibt:

    Warum schreibst du ein Tutorial über das MVC Pattern? Warum verwendest du nicht schon eine vorhandene Lösung wie z.B. vom Zend Framework?


    http://framework.zend.com

  2. Benjamin Milde schreibt:

    Natürlich gibt es MVC-Frameworks wie Sand am Meer. Doch alle haben eine Recht lange Eingewöhnungszeit... und schwer wird es erst dann, wenn man eigene Spezial-Funktionalität benötigt. Also warum dann nicht selbst eine Art Framework schreiben, in der man weiß was jede Zeile macht?

    Ich hab genau so ein Tutorial gesucht, weil ich mich mal wieder mit PHP beschäftigen will und da ich jetzt Informatik studiere, möchte ich das auf einem höhren Niveau (=MVC-Style) tun.

    Vielen Dank!

  3. Brati schreibt:

    Vielen Dank für die Verlinkung zu mir. Es freut mich, dass endlich auch mal ein Backlink von einer Seite kommt, den ich nicht selbst gesetzt habe.

    Schade ist dabei nur, dass es beim MVC-Pattern bei mir ja (im Moment) nicht mehr weiter geht und die Leser daher kaum dazu angeregt werden immer mal wieder vorbeizuschauen.

    Auf jeden Fall freue ich mich natürlich riesig, dass mein MVC-Tutorial nicht nur Suchende anlockt, wie die Statistik zeigt, sondern diesen auch wirklich helfen kann. Ich setze in einem neuen Blog-Eintrag mal einen Backlink zu dir, um deine Seite etwas zu stärken und die Verbindung anzuzeigen. :-)

  4. Thomas schreibt:

    @Radhad: Warum benutzen manche Menschen Linux, obwohl es eh Windows oder Mac gibt?

    Aber im Ernst, um das Verständnis von MVC zu fördern.

  5. Dieter schreibt:

    Danke fürs Tutorial!

    Was mich jetzt noch interessieren würde:
    wie benennt man Klassen, Dateien, Verzeichnisse (nach MVC)?
    Im Beispiel mit ein paar Dateien ist es ja relativ einfach, aber wenn man 20 Klassen hat wirds schnell unübersichtlich.

    Würde man es z. B. so machen:

    Klasse1_Controller ist in controller/Klasse1.php
    Klasse1_View ist in view/Klasse1.php
    Klasse1_Model ist in model/Klasse1.php

    oder nach Funktion (Bbeispiel bei Authentifizierung)

    Auth_Controller in Auth/Auth.controller.php
    Auth_View in Auth/Auth.view.php
    Auth_Model in Auth/Auth.model.php

    AuthBla_Controller in Auth/AuthBla.controller.php
    AuthBla_View in Auth/AuthBla.view.php
    AuthBla_Model in Auth/AuthBla.model.php

    Gibt es dazu "Standards"?

  6. Dieter schreibt:

    P. S. oder noch verzweigter:


    Auth_Controller in Auth/Controller/Auth.php
    Auth_View in Auth/View/Auth.php
    Auth_Model in Auth/Model/Auth.php

    AuthBla_Controller in Auth/Controller/AuthBla.php
    AuthBla_View in Auth/View/AuthBla.php
    AuthBla_Model in Auth/Model/AuthBla.php

    Nur das artet ja irgendwie aus ;-)

  7. Thomas schreibt:

    Naja, ich machs meistens so, dass ich das Ganze in Module aufteile.
    Also ich schreibe eine Dispatcher-Klasse, die den Request entgegen nimmt und dann an den Controller des jeweiligen Moduls weitergibt.
    Die Verzeichnisstruktur könnte dann ungefähr so aussehen:

    index.php
    classes/dispatcher.php
    classes/..andere Standard-Klassen
    module/blog/controller.php
    module/blog/model.php
    module/blog/view.php
    module/blog/templates/..die Templates fürs Modul
    module/content/controller.php
    module/content/model.php
    module/content/view.php
    module/content/templates/..die Templates fürs Modul
    module/andere module/...

    Also das ist nur ein Vorschlag, aber so in etwa sieht bei meinen Projekten die Verzeichnisstruktur aus...
    Ist natürlich Geschmackssache, ausprobieren und sehen wie man am Besten zurechtkommt...

  8. Dieter schreibt:

    Ah ok danke!
    Hatte es von der Struktur auch so ähnlich angelegt, nur auf die Dispatcher-Klasse bin ich nicht gekommen ;-)

  9. Mannfred schreibt:

    Ich finde dein Tutorial superklasse.

    Könntest du aber noch auf das verarbeiten von Forumlaren eingehen. Wie der Controller nach dem drücken des Submit-Buttons arbeitet.

    Das müsste dann ja hier irgendwie rein:

    $this->template = !empty($request['view']) ? $request['view'] : 'default';

  10. Patrick schreibt:

    Hey, thanks for your Tutorial :)
    I was just looking for some info to get a good kickstart and your tutorial is perfect. By the way, I'd also good like to have as Mannfred some hints about forms.

    natürlich verstehe ich ein bisschen Deutsch, ich wollte nur kein blödes Wort hier schreiben :) ich lerne immer noch.

    Danke

  11. soyo schreibt:

    Super, so ein Tutorial suche ich schon ewig. Sehr gut geschrieben.

    Ich schreibe mir gerade noch eine Router-Klasse dazu.

    Danke ;)

  12. soyo schreibt:

    Ich hätte noch mal eine Frage ... ich habe mir nun 2 Module geschrieben. Jedes hat sein eigenen Model, View und Controll.
    Wie füge ich diese beiden Module auf einer Page zusammen?

  13. Brati schreibt:

    Wenn ich mich noch richtig erinnere - ich hatte leider die letzten Wochen nie Zeit etwas zu Programmieren - sieht das MVC-Pattern für jede aufgerufene Seite genau ein Model-View-Controller-Paar vor. Beim Zend-Framework ist dies insofern gebrochen, als man mehrere Models für eine Seite verwenden kann.

    Um sie zusammenzufügen, könntest du eine der beiden Klassen ableiten und die Methoden der anderen Klasse so dazuschreiben. PHP unterstützt leider keine Mehrfachvererbung :(
    Die View musst du dann auch neu schreiben und die Implementierung der Models kenne ich bei dieser Umsetzung nun nicht... Eventuell gilt auch hier: Vererben + Rest reinschreiben

    Ich hoffe, dass ich helfen konnte.

    Freundliche Grüße
    Stefan

  14. Lukas schreibt:

    @soyo
    Du lädst ganz einfach deinen Controller (der dann auf dein Model zugreift). Warum hast du eine eigene View implementiert? Benutz doch die schon vorhandene Template-View.

    @lemme.at
    Gutes Tutorial! Ob es Sinn macht den Model static zu implementieren, kann man streiten..

  15. Ak schreibt:

    Die Methoden zum Laden der Objekte einer Klasse gehören eben zur Klasse und sollten daher auch static sein... anders natürlich mit den Eigenschaften eines spezifischen Objektes.

  16. Simon schreibt:

    Hallo!

    Ich kenne noch ein weiteres MVC-Tutorial. Das stammt von mir selbst. Hier gehts zur Artikelübersicht: http://www.net-developers.de/2008/09/23/mein-eigenes-mvc-framework-artikelubersicht/

    Das Tutorial wird momentan überarbeitet und erweitert. Der Code kann hier heruntergeladen werden: http://www.net-developers.de/2008/12/27/aktuelle-version-des-mvc-frameworks-zum-download/

    Viel Spass damit!
    Würde mich freuen, wenn du mein Tutorial auch hier verlinken würdest:
    http://tutorials.lemme.at/mvc-mit-php/index.html#quellen

    MfG
    Simon

  17. Rico schreibt:

    Ich finde das Tutorial super. Es zeigt einfach und kompakt das Zuammenspiel der einzelnen MVC Komponenten und das Laden von "Untertemplates" in ein "Haupttemplate". Momentan mache ich mich daran, das Model für Datenbankabfragen "aufzubohren" und ein Session-Handling einzubauen. Aber vom Prinzip her finde ich es perfekt :) Super Arbeit. Danke, dass Du so etwas zur Verfügung stellst!

    Rico

  18. Simon schreibt:

    Hi,

    diese Frage hat nichts mit dem Tutorial an sich zu tun.

    Mich würde interessieren, was für ein Plugin du fürs Syntax-Highlighting verwendest.

    MfG
    Simon

  19. Thomas schreibt:

    guckst du hier ;)
    http://webcode.lemme.at/archives/22-Syntaxhighlighter-fuer-Serendipity.html

  20. Hans-Ulrich Wolters schreibt:

    Hallo
    Ich verstehe nicht, wie man Dein Programm im Browser aufruft und wie der Zusammenhang mit dem Request ist; kannst Du mir das an einem Beispiel zeigen?
    Gruss Hans-Ulrich (uli)

  21. Thomas schreibt:

    @Hans-Ulrich: Du brauchst dazu einen Webserver mit PHP 5 auf den du das hochladen kannst, um das Skript zu verwenden bzw. zu testen.
    Ich denke dir fehlen da einige Basics, am besten ist es wohl hier anzufangen: http://www.schattenbaum.net/php/

  22. Peter schreibt:

    Hallo,

    wie kann ich denn, wenn ich z.b. ein Formular speichere und das Script fertig ist die Klasse neu laden? Also das die selbe Seite wieder neu geladen wird.

  23. benni schreibt:

    Hallo,

    wie kann ich die diplay() Klasse reloaden z.b. nach einem Formular versand?

    Mfg benni

  24. Thomas schreibt:

    Versteh deine Frage nicht ganz...
    display() ist eine Methode des Controllers, keine Klasse.

    Wenn du das Formular abschickst wird ja die ganze Applikation neu geladen, sprich der Controller wird neu aufgerufen...

  25. tom w. schreibt:

    thx für das coole tutorial! habs jetzt endlich kapiert :-)

  26. Markus schreibt:

    Ich habe mal das Tut probiert. Funktioniert soweit ganz gut. Nur das Template macht mir Probleme. ich wollte damit XML ausgeben aber



    wirft bei mir einen syntax fehler.

    was kann ich da machen?

  27. Simon schreibt:

    Lol, wie geil ist das denn?

    Du schreibst überhaupt keinen Code und erwartest, dass wir hellsehen können?

  28. Markus schreibt:

    ha ha ... super ... ja hellsehen wäre auch nicht schlecht ... den code hat der parser rausgehaun.

    war im prinzip blos n doctype für xml 1.0 ...

    der code ist genau wie im tutorial nur eben das template von html nach xml geändert ... schon gings nicht mehr

  29. Martin schreibt:

    Hallo,

    Ich find das Tutorial super.


    Allerdings denke ich, dass man ja schlecht alles in eine controller.php schreiben kann.

    Oben wurde was von einer Dispatcherklasse geschrieben. Ist es möglich mir mal zu zeigen, wie die aussieht?

    Gruß Martin

  30. Jaeckel schreibt:

    Hey,

    super tolles Tutorial.

    Ich muss nämlich ein Plugin für Wordpress schreiben. Dann MVC zu nutzen ist schonmal eine super Grundlage.

    Vielen Dank!

  31. nsche schreibt:

    Danke, hat geholfen

  32. Ralph schreibt:

    Das Tutorial ist äusserst hilfreich,
    * weil es die Funktionsweise MVC anhand eines konkreten Beispiel direkt auszuprobieren gestattet,
    * weil es nur so kompliziert wie nötig ist und nicht gleich alle erdenklichen Spezialfälle mit darstellen will. Nicht so abschreckend abstrakt wie http://www.onlamp.com/pub/a/php/2005/09/15/mvc_intro.html.

    Habe nichts runtergeladen, sondern abgetippt, nachvollzogen, dabei gelernt und - natürlich - Fehler auf der Website(!) gefunden:

    1) Model-Skript, line #31:
    da muss es nicht "$this->entries" heissen, sondern: "self::$entries"

    2) Controler-Skript, line #13:
    !emptyempty muss heissen !empty

    Das Template "default.php", so wie auf der Webseite dargestellt, enthält die Sequenz "«?php echo $entry['id'] ?»". DAS KLAPPT NICHT, weil das Array $entry keinen Eintrag "id" enthält.

    Um den Array-Index zu verwenden, muss ein anderer Weg beschritten werden. Dazu ist die foreach-Schleife leider ungeeignet. Ich habe eine for-Schleife benutzt:

    ------
    reset($this->_['entries']);
    for ($i=0; $i_['entries']); $i++) {
    echo "«h2»«a href='?view=entry&id=".key($this->_['entries'])."'»";
    echo $this->_['entries'][$i]['title']."«/a»«/h2»";
    echo "«p»".$this->_['entries'][$i]['content']."«/p»";
    next($this->_['entries']);
    }
    // Damit es hier richtig dargestellt wird, habe ich die spitze Klammer auf/zu der HTML-Tags ersetzt durch « »
    ------

    Gruss Ralph.

  33. Frank Meier schreibt:

    Hi,

    ich habe Anfang 1978 mit dem programmieren auf einem PET 2001 begonnen. Ich habe den bitteren Weg der eigenen Fehler gehen müssen, da es noch keine Hilfen wie dieses Internet gab. Universitäten welche Informatik lehrten, grins, gab es auch nicht. Es gab gar nichts. Wir mußten uns alles selbst lehren. Ich habe die gesamte Entwicklung der Computerprogrammierung durch gemacht, praktisch alle Sprachen (So um die 30 Stück) gelernt. Ich habe vieles aus meinen Fehlern gelernt.

    Und nun dieser Schwachsinn? M V C

    Wollen die damit das Rad noch einmal neu erfinden? Ich habe mir seit langer Zeit einen Stil angewöhnt, der diesen Aufbau hat (und ich habe ihn nicht MVC genannt), wenn es um Webprogrammierung, ja auch um andere Arten der Datenbankprogrammierung geht. Es ist doch normal für einen guten Programmierer Dinge zu trennen welche zu trennen sind. Für mich ist dieses MVC nur Blabla. Ich denke, daß jeder Programmierer welcher eine gesunde Logik hat, sich selbst so ein Modell entwickeln kann. Ich habe im Jahr 1985 damit angefangen, alle Funktionen extern zu verwalten und zu klassifizieren, in Objekte umzuwandeln, lange Zeit bevor die OOP in Mode kam. Ich habe diese sortiert in Datenbankklassen usw. Ich habe bereits im Jahr 1985 dieses System, welches modernerweise nun MVC genannt wird, in vielen Projekten benutzt um Übersicht über wirklich sehr große Projekte zu haben.

    Ich bin entweder zu doof oder zu verkalkt, aber ich verstehe nicht was dieses Geplapper nach MVC soll?

    Was wollen uns die großen Weisen damit lehren? Sagt es mir, ich bin neugierig. Ist MVC eine neue Religion? Oder soll es uns dummen Programmierern den Weg weisen?

    Ich habe tausende Bücher übers programmieren gelesen, von Leuten welche keine Ahnung hatten, was für einen Schwachsnn sie geschrieben haben. Es gab auch viele gute Bücher. Aber ich bin auch heute noch der Meinung: Genauso wie jeder seine Vorlieben für verschiedenes Essen hat, so entwickelt auch jeder seinen eigenen Programmierstil. Damit meine ich jetzt natürlich nicht die Spaghetticode-Programmierer sondern die Programmierer, welche sich vorher hinsetzen und wirklich nachdenken wie sie das ganze aufbauen. Und da gibt es viele Wege, welche zum Ziel führen. Es muß nicht MVC sein. Oft ist es sogar eine MVC-Logik, aber die Programmierer wissen gar nicht daß sie dieser Logik folgen.

    Ich habe dieses Tutorial, welches übrigens wirklich Klasse (aber evt. totaler nonsens) ist, genau durchgelesen. Mir ist die Logik klar, aber was soll das? Heute heißt es MVC, morgen XYZ und übermorgen QUIRX?

    Wann kommt der nächste moderne Schwachsinn, welcher eine schon lange da gewesene Logik als supermodern verkauft?

    Klärt mich auf.

    Schöne Grüße an alle von einem Programmiererdinosaurier der ersten Stunden
    Frank Meier

  34. StyLer schreibt:

    Nicht unbedingt das aller beste Beispiel Tutorial aber es hat sein Ziel erreicht! ^^
    Hab wohl endlich das MVC prinzip verstanden auch wenn ich immer noch nicht verstehe warum die index nie das Design enthält ...

    Und in sachen "Warum das Rad neu erfinden". Ganz einfach: Man lernt nichts durch fertiges, sondern nur durch unfertiges ;)

  35. Frank Meier schreibt:

    Ich wollte ja nur darauf hinwesien, daß dieses MVC schon uralt ist. Ich glaube seit 1979 oder so. Es ist jetzt nur verkompliziert wieder als Coverversion auf dem Markt.

    Ich bin übrigens sehr froh daß es nun Internet gibt. Leute wie Thomas hier sind wirklich wichtig. Es hat sich gezeigt daß wir Programmierer eine Klasse Gruppe sind. Soviel Hilfsbereitschaft, unglaublich. Ich bin wirklich stolz Programmierer zu sein und Leute wie Euch um mich zu wissen. Ihr führt unsere Anfänge klasse weiter. Ihr seid lernbegierig und hiflsbereit ohne Ende. Sowas muß man erst mal in anderen Communities finden.

    Ich bin mir sicher daß die neue Programmiergeneration noch großartige Sachen zustande bringen wird, weil sich alle irgendwie hochpuschen und Ideen vermitteln. Wir sind früher wrklich manchmal 2-3 Tage vor einem Problem gesessen, es gab keine Hilfen, keine Bücher (oder schlechte), Heute ist es wirklich besser.

    Schöne Grüße (auch an Dich hier, Thomas)
    Frank Meier

  36. Andreas schreibt:

    Hallo,

    das ist echt ein gutes Tutorial. Vielen Dank dafür.

    Eine Frage zur MVC-Architektur habe ich noch: In der View werden die Daten angezeigt die ich im Model "generiere". Ich kann die Daten aber nur über den Controller an die View "binden". Ist es möglich die Daten vom Model direkt in der View zur Verfügung zu haben, ohne den Schritt der Zuweisung über den Controller zu gehen?

  37. Martin schreibt:

    Hallo,

    die Informationen zum Blogtitel usw. stehen in der Controller-Klasse. Müsste das nicht eigentlich auch ins Model? Es sind schließlich Daten und haben an sich nichts mit dem Controller zu tun, oder sehe ich das falsch?

    Gruß
    Martin

  38. H schreibt:

    Was ist ein Model ein Vie und ein Controller.

    MVC=>Model, View , Controller
    M wie Model:
    Ein Model beinhaltet Daten (woher auch immer )also es besorgt sich NICHT DATEN aus der DB sondern es wird damit gefüttert(aus DB, XML, CSV, ....)

    V wie View:
    Ein View stellt Model's (ein oder mehrere) in seiner Form (XMLView, HTMLView, WindowsFormsView, HeuteNochNichtgesehenView, ...) dar. Er sagt aus wie DAS MODEL oder Die Model's (nicht Modells[Heidi,...]) im eigenen Kontext dargestellt werden. Also Klar: Model Heidi sieht im HttpView => so aus:
    ....,
    und im WindowFormsView=> so
    Text1.Text =Heidi.Name und im XMLView=>...

    C wie Controller
    Ein Controller steuert wann welches Model (oder auch keins) wie dargestellt wird. Und wenn nichts darzustellen ist ? Wie Nichts dargestellt wird.

    P.S. @Ralph
    MVC ist ein Pattern was aus bisherigen [seit 1978](und deinen Fehlern) als EMPFEHLUNG entstanden ist um eben NICHT das RAD NEU zu ERFINDEN. ES hat weder was mit Programmierstil noch mit Trennung von Logik zu tun. Es besagt einfach nur: WENN ICH DAS PROBLEM HABE[ Steuerung von Darstellungen auf untersch. Anfragen] DANN KÖNNTEST DU ES DAMIT LÖSEN!!!

    Es besgat nicht: DU MUSST ES SO TUN.
    Sondern:
    ES HABEN SCHON XXX PROGRAMMIERER DAMIT GELÖST ALSO VERSCHWENDE DEINE ZEIT NICHT und versuche es so [wie andere seit xxx jahren].

    ABER: Wenn du einen besseren Ansatz hast, dann lass es uns probieren.

    Deshalb entstehen auch so viele MVC=> Frameworks die in der Grundidee dasselbe tun aber in der Umsetzung alle ihren eigenen Charme haben.

    Also kompakt: verstehen und Anwenden und VERBESSERN => wenn POTENTIAL.

    mfg H

  39. LucaTM schreibt:

    Hallo zusammen

    Danke vielmals für dieses Tutorial, es ist das beste, das ich je über MVC in PHP gelesen habe!

    Aber einige Fragen habe ich noch:
    1. Wie implementierst Du die anderen Conroller von den einzelnen Sites? (Du wirst doch bei einem grossen Projekt keine switch-Abfrage durchführen...)
    2. Wird immer die Haupt-View - im classes-Ordner - verwendet, oder hast Du für jede View eine oder mehrere Views?

    Danke im Vorraus... :)

    Mit freundlichen Grüssen
    LucaTM

  40. rico schreibt:

    "Hallo ich muss diese code mit mvc vendent aber ich weiße nicht wie ich es schaffe ,könnne sie mir mal helfen? "





    Formular Für Station














    zurück



  41. LittleCodeFighter schreibt:

    Vielen Dank für dein kurzes und erhellendes Tutorial!!

  42. Frank Meier schreibt:

    Mal ein paar Gedankengänge.

    Sagen wir mal daß eine Webseite erstellt werden soll. Der Kunde kann sich in einen Onlineshop durchblättern, sowie einloggen, und sehen wie sein schöner Zaster langsam wie üblich die Reichen reicher macht.

    Klingt simpel, odäääääääär?

    Ist es aber nicht. Dies ist eine der verzwicktesten und hinterhältigsten Aufgaben mit vielen bösen Fallen für jeden Programmierer, sofern er nicht ein meist systemverlangsamendes und resourcenfressendes Framework dafür benutzt.

    Und genau in so einem Fall gibt es praktisch nur einen Weg.

    Trennung von statischen Daten, also Daten die sich nie oder fast nie ändern.

    Trennung von immer wieder upgedateten Daten, welche durch Aktionen des Benutzers, beeinflusst werden.


    Trennung von Daten des Auftraggebers für die Webseite, welcher im Backend, also im Verwaltungsteil der Webseite,

    seine Daten ständig auf dem neuesten Stand bringt. Z.B. durch hinzufügung eines neuen Artikels in seinem Onlineangebot.

    Nun kommt die Struktur, also der Rohbau der Webseite. Wie gesagt, die leckere appetiterregende Ansicht für den Kunden (Frontend) und der Verwaltungstrakt für die Instandhaltung der Webseite (Backend).

    Ich meine damit aber wirklich nur die Bildschirmmasken, sonst nichts, aber wirklich gar nichts. Um amerikanischen Slang zu benutzen: "Stripped to the bone".

    Es klingt kompliziert, ist bis jetzt aber noch kein Problem. Gehen wir davon aus, daß die Webseite mehrsprachig sein sollte.

    Dies erfordert feinfühliges Handeln.

    Ein Webprogrammierer sollte sich zu den üblichen MVC-Wischiwaschi, und den anderen üblichen Gedanken auch noch folgende machen:

    Ich muss immer im Hintergrund meines Gehirns haben, mit allem was ich hier erstelle, davon ausgehen,

    1) daß diese Seite in ein paar Jahren eine moderneres Layout bekommen soll.

    2) daß evt. Steuerrichtlinien verändert, abgeschafft, gesplittet, neu hinzukommen, oder erweitert werden.

    3) daß durch die Modernisierung von Webseiten der Lieferanten (3Party-Webseiten) des Webseitenauftraggebers, Schritte automatisiert werden können, was bisher nicht nicht der Fall war.

    4)Daß durch die Zusammenführung mit anderen Webseiten wesentlich mehr Menüpunkte wie jezt benötigt wrden.

    Wichtig ist dabei aber, sich nicht in Kleinigkeiten zu verlieren. Es gibt Fiessler, die haben ihre Projekte nie fertiggestellt, weil sie es perfekt machen wollten.

    Eine interaktive Webseite ist ein lebendes Ding, welches gehätschelt werden will.

    Wenn der Papa der Webseite, als Du als Programmierer Deinem Kind ein gesundes Rückgrat gibst, dann ist das schon mal gut.

    Vergeude auch nicht zuviel Zeit mit relativen Datenbanken. Erstelle eine gesunde Grundstruktur und supporting Datenbanken, wei benötigt. Durch die enorme Speicherkapazität ist es heute nicht mehr so wichtig, überall etwas einzusparen. Wenn es also der Webseite gut tun würde, nicht immer wieder einen andere Tabell zu erstellen, also für jeden Mist, dann laß es sein. Das war mal vor 15 Jahren ok.

    Übrigens tut Ihr Euren Kunden einen riesengefallen, wenn ihr die Anzeigen auf dem Monitor und die Schriften gut leserlich macht. Nicht das mittlerweile übliche fast nicht lesbare Zeug. Ich habe mal ein großes Programm für eine Behörde geschrieben. Ich war kurz vor dem End, als eine Mitarbeiterin, welche dieses Programm später benutzen sollte, dies sah. Ihr Kommentar, "Grässlich, da kann man ja gar nicht lesen.". Sie hat mich so aufgeweckt, daß ich damals all Masken umgeschrieben habe. Arbeitsverlust ... 6 Wochen. ABER ... als dann mal die Chefbuchhalterindas Programm sah, meinte sie; "Mei, Ihr habt so ein schönes Programm. Da kann man ja richtig alles lesen, ohne sich konzentrieren zu müssen. Ich habe nach 3 STunden der Benutzung unseres Buchhaltungsprogramms Kopfschmerzen.". Die Krankmeldungen sind in den Abteilungen, in welchen mein Programm benutz wurde dramatisch gesunken.

    Ich hoffe, daß ich mit dem BlaBla eines Computerdinosauriers nicht gelangweilt habe.

    Franky

  43. Thomas schreibt:

    @Frank: naja, gelangweilt... Wirkt halt ein wenig deplaziert ;)

  44. Christian schreibt:

    Zum Controller nur ganz kurz:

    public function __construct($request){
    $this->view = new View();
    $this->request = $request;
    $this->template = !emptyempty($request['view']) ? $request['view'] : 'default';
    }


    Einmal zuviel "empty", für alle die es übersehen haben sollten. :)
    Grüße und schonmal schöne Feiertage im vorraus!

  45. Michael schreibt:

    Ich sehe in der Zeile
    $request = array_merge($_GET, $_POST);
    ein Sicherheits(?)problem aber auf jedenfall ein Performanceproblem. Es sollte schon eine Trennung zwischen Formular- und Anfragedaten vorhanden sein.
    Das Performanceproblem kann daraus resultieren, dass der mögliche Memcache bei entsprechend laxer Programmierung mit Formularansichten füllt, die eigentlich nur POSTs erhalten sollten, oder eben nicht wirksam wird, weil beim Filtern der Filter per POST statt per GET übergeben wurde.
    Das Sicherheitsproblem sehe ich bei der Aufnahme von GET-Daten in die Historie des Browsers und dass sie nicht verschlüsselt übergeben werden können bei SSL.

    Es ist also unbedingt wichtig, das Request immer in POST und in GET Daten zu unterteilen. Selbst wenn es hier gemerged wurde.

    Liebe Grüße


Kommentar schreiben



Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA