Controller

  • Hi Easy-Coding Community,

    wie ihr sicherlich schon gemerkt habt bin ich dabei eine kleine seite auf zu bauen (so viele fragen :D). Jetzt habe ich nicht eine frage und
    zwar, wie würdet ihr einen Controller (Pattern MVC) in PHP umsetzten.

    Ich dachte mir ich mach eine Klasse Controller und werde sie mit den Modulen der einzelnen "UnterControllern" füttern. Gibts hier vielleicht ein paar Ansätze von euch oder auch Beispiele.

    Im moment habe ich einfach nur eine index.php die aus $_GET und $_SESSION reagiert => Dies wird aber ziemlich schnell unübersichtlich. Für die View verwende ich Smarty (geht super).

    So jetzt zurück auf meine Frage bzw. Bitte. Wie mache ich aus der jetzigen index.php einen gescheiten Controller.

    zB index.php

    Quellcode

    1. if(isset($_SESSION["USER"]) && !$_GET["logout"] && !$_GET["mitarbeiter"]){
    2. echo "<a href='$_PHPSELF?logout=true'>Logout</a><br/>";
    3. if($_SESSION["USER"]->getStatus() && $_SESSION["USER"]->getRechte() > 4){
    4. $smarty->assign('all',l$dbObj->getAllMitarbeiter(););
    5. $smarty->display("listMitarbeiter.tpl");
    6. }
    7. }else if($_GET["mitarbeiter"]){
    8. $mit = $dbObj->getMitarbeiter($_GET["mitarbeiter"]);
    9. $smarty->assign("mitarbeiter",$mit->toArray());
    10. $smarty->display("mitarbeiter.tpl");
    11. }else if($_GET["logout"]){
    12. session_destroy();
    13. $smarty->display("goodbye.tpl");
    14. } else {
    15. $smarty->display("main.tpl");
    16. echo "Bitte Einloggn";
    17. }
    Alles anzeigen


    Ich bitte um Anmerkungen, Ideen, Beispiele ...

    Danke
    Sw00sh!
  • Eigentlich muss man das MVC Pattern nicht mehr neu implementieren, da gibts schon Implementierungen wie Sand am Meer:
    • Zend Framework
    • CakePHP
    • PHPMvc


    Im Grund könntest du einen Art index-Controller machen, der alle Actions annimmt und dann an die entsprechenden ActionController verteilt... Je nach dem wie tief du das einsetzen willst kannste da deinen Aufand bis ins uneendliche treiben...