<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="learning.quickstart.intro">
    <title>Zend Framework &amp; MVC Einführung</title>

    <sect2 id="learning.quickstart.intro.zf">
        <title>Zend Framework</title>

        <para>
            Zend Framework ist ein Open Source, objektorientierter Web Anwendungs Framework für
            <acronym>PHP</acronym> 5. Zend Framework wird oft eine "Komponentenbibliothek" genannt,
            weil er viele lose verbundene Komponenten hat die man mehr oder weniger unabhängig
            verwenden kann. Aber Zend Framework bietet auch eine fortgeschrittene
            Model-View-Controller (<acronym>MVC</acronym>) Implementation die verwendet werden kann
            um eine Basisstruktur für eigene Zend Framework Anwendungen zu sein. Eine komplette
            Liste der Komponenten des Zend Frameworks mit einer kurzen Beschreibung kann in der
            <ulink url="http://framework.zend.com/about/components">Komponenten Übersicht</ulink>
            gefunden werden. Dieser Schnellstart zeigt einige der am meisten verwendeten Komponenten
            vom Zend Framework, inklusive <classname>Zend_Controller</classname>,
            <classname>Zend_Layout</classname>, <classname>Zend_Config</classname>,
            <classname>Zend_Db</classname>, <classname>Zend_Db_Table</classname>,
            <classname>Zend_Registry</classname>, zusammen mit ein paar View Helfern.
        </para>

        <para>
            Durch Verwendung dieser Komponenten bauen wir eine einfache Datenbank-gesteuerte
            Guest Book Anwendung in wenigen Minuten. Der komplette Quellcode für diese Anwendung ist
            in den folgenden Archiven vorhanden:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <ulink
                        url="http://framework.zend.com/demos/ZendFrameworkQuickstart.zip">zip</ulink>
                </para>
            </listitem>

            <listitem>
                <para>
                    <ulink
                        url="http://framework.zend.com/demos/ZendFrameworkQuickstart.tar.gz">tar.gz</ulink>
                </para>
            </listitem>
        </itemizedlist>
    </sect2>

    <sect2 id="learning.quickstart.intro.mvc">
        <title>Model-View-Controller</title>

        <para>
            Was also ist dieses <acronym>MVC</acronym> Pattern über das alle Welt redet, und warum
            sollte es verwendet werden? <acronym>MVC</acronym> ist viel mehr als nur ein
            drei-wortiges Acronym (<acronym>TLA</acronym>) das man erwähnen kann wann immer man
            smart erscheinen will; es ist so etwas wie ein Standard bei der Erstellung von modernen
            Web Anwendungen. Und das aus gutem Grund. Der Code der meisten Web Anwendungen fällt in
            einer der folgenden drei Kategorien: Präsentation, Business Logik, und Datenzugriff. Das
            <acronym>MVC</acronym> Pattern modelliert diese Trennung bereits sehr gut. Das
            Endergebnis ist, das der Präsentationscode in einem Teil der Anwendung konsolidiert
            werden kann, die Business Logik in einem anderen Teil und der Code für den Datenzugriff
            wieder in einem anderen. Viele Entwickler finden diese gut definierte Trennung
            unentbehrlich um deren Code organisiert zu halten, speziell wenn mehr als ein Entwickler
            an der gleichen Anwendung arbeitet.
        </para>

        <note>
            <title>Mehr Informationen</title>

            <para>
                Brechen wir das Pattern auf und schauen wir uns die individuellen Teile an:
            </para>

            <para>
                <inlinegraphic width="321" scale="100" align="center" valign="middle"
                    fileref="figures/learning.quickstart.intro.mvc.png" format="PNG" />
            </para>

            <itemizedlist>
                <listitem>
                    <para>
                        <emphasis>Modell</emphasis> - Dieser Teil der eigenen Anwendung definiert
                        die grundsätzliche Funktionalität in einem Set von Abstraktionen.
                        Datenzugriffs Routinen und etwas Business Logik kann im Model definiert
                        sein.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>View</emphasis> - Views definieren was exakt dem Benutzer
                        präsentiert wird. Normalerweise übergeben Controller Daten in jede View
                        damit Sie in einem Format dargestellt werden. Views sammeln auch oft Daten
                        vom Benutzer. Dort findet man üblicherweise <acronym>HTML</acronym> Markup
                        in der eigenen <acronym>MVC</acronym> Anwendung.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>Controller</emphasis> - Controller verbinden das komplette
                        Pattern. Sie manipulieren Modelle, entscheiden welche View, basieren auf der
                        Benutzeranfrage und anderen Faktoren, angezeigt werden soll übergeben die
                        Daten welche jede View benötigt, oder übergeben die Kontrolle komplett an
                        andere Controller. Die meisten <acronym>MVC</acronym> Experten empfehlen
                        <ulink
                            url="http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model">Controller
                            so schlank wie möglich zu halten</ulink>.
                    </para>
                </listitem>
            </itemizedlist>

            <para>
                Natürlich gibt es über dieses kritische Pattern <ulink
                    url="http://ootips.org/mvc-pattern.html">mehr zu sagen</ulink>, aber das gesagte
                sollte genug Hintergrund vermitteln um die Guestbook Anwendung zu verstehen die wir
                bauen wollen.
            </para>
        </note>
    </sect2>
</sect1>
