NoFollow Free!
SHIFT Weblog

Dieses Blog ist ein Online-Magazin für erfahrene Website-Entwickler und Webdesigner, die PHP und Webdesign lieben.

Tag: template

PHP

Mein Verständnis von MVC

mvc_v

MVC – diese drei Buchstaben haben es in sich. MVC ist ein Design Pattern, eine strukturelle Lösung für Entwickler. Kaum ein anderes Design Pattern löst so viel Kontroverse aus und regt zu endlosen Diskussionen an – zumindest in der PHP-Welt.

Das liegt daran, dass MVC recht oberflächlich beschrieben wird, und möchte man sämtliche MVC-Erklärungsversuche zusammenfassen, so ist man schnell der Auffassung:

  • Model (M) : Die Verbindung zur Datenbank
  • View (V) : Die Ausgabe an den Benutzer
  • Controller (C) : Der Verwalter zwischen den Schichten

Die Wahrheit ist aber: Es ist viel mehr als das. Der große Fehler, den MVC-Neulinge dabei begehen, ist, ihr Projekt nur nach diesen Gesichtspunkten zu gestalten. Oft wird übersehen, dass MVC nur eines von mehreren Zahnrädern in einer ganz anderen Schichtenarchitektur ist: Der Präsentationsschicht, der Logikschicht (auch als Businessschicht bezeichnet) und der Persistenzschicht. MVC agiert in allen drei Schichten, hauptsächlich jedoch in der Präsentationsschicht. Verfolgt man MVC-Diskussionen in gängigen Foren, kommt erschwerend hinzu, dass jeder MVC etwas anders auslegt. Es gibt also nicht selten kein “richtig” oder “falsch”. Die Grenzen, die MVC versucht aufzuzeigen, scheinen paradoxerweise ineinander zu verschwimmen.

Ich versuche, mit diesem Artikel dem Verständnis von MVC auf die Sprünge zu helfen, ich betone aber, dass dies nur meine Auffassung des Patterns ist. Ich möchte daher nicht deutlich machen, dass meine Ansicht die richtige oder die falsche ist – es ist eher ein mögliches Konzept zur strukturellen Realisierung von MVC. Außerdem liefere ich hier kein MVC-Tutorial, die allgemeine Funktion des Patterns sollte bekannt sein.

Weiterlesen ›

PHP, Webdesign

This is not sexy: PHP-Template-Engines á la Smarty

Smarty not sexy

Nachdem ich mich in der Vergangenheit über das Zend Framework, Flash und CSS Frameworks ausgelassen habe, ist es mal wieder an der Zeit, den Buhmann zu spielen und möchte mich hier nun über einige PHP-Template-Engines aussprechen. Stellvertretend für viele dieser Projekte werde ich im laufe des Artikels “Smarty” nennen – ich glaube, dass dieser Name vielen PHP-Entwicklern ein Begriff ist.

Der Grundgedanke ist nicht verkehrt: Bei der Erstellung von (PHP-)Applikationen sollte darauf geachtet werden, die Programmlogik vom Design und der Ausgabe zu trennen. Unter Beachtung der Model-View-Controller-Struktur sollte dieses Vorhaben auch keine Hexerei sein. Doch wie könnte man den PHP-Code vom Design (der XHTML-Datei) trennen? Ganz einfach: Mit einer Template-Engine. Sie kümmert sich um die Zuweisung von Variablen innerhalb des Controllers und um die Ausgabe der in der View-Datei. Eine simple View-Datei unter Beachtung des MVC-Prinzips könnte nun also so aussehen:

<!DOCTYPE html>
<html>
    <head>
        <title><?php echo $titel; ?></title>
    </head>
    <body>
        <h1>Hallo <?php $username; ?></h1>

        <?php echo $usercontent; ?>
    </body>
</html>

Doch Halt! Eigentlich wollten wir doch den PHP-Code vom Design trennen, oder? In unserer View-Datei ist nun aber trotzdem PHP-Code zu sehen. Was können wir tun, damit der Designer nicht am, *räusper*, hochsensiblen PHP-Code werkeln muss? PHP-Template-Engines wie Smarty verwenden für die Lösung des Problems eine Metasprache, die auch ohne PHP-Code die Ausgabe und Formatierung von Variablen übernimmt.

Weiterlesen ›