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

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

        <para>
            Zend Framework to otwarty, zorientowany obiektowo framework aplikacji webowych
            przeznaczony dla <acronym>PHP</acronym> 5. ZF jest często określany mianem 'biblioteki
            komponentów' ponieważ składa się z wielu, luźno powiązanych części, których można
            używać niezależnie od siebie.
            Dodatkowo Zend Framework oferuje zaawansowaną implementację
            wzorca projektowego Model-Widok-Kontroler
            (Model-View-Controller - <acronym>MVC</acronym>),
            która może zostać użyta do skonstruowania podstawowej struktury aplikacji.
            Pełna lista komponentów Zend Framework razem z krótkim opisem znajduje się w dziale
            <ulink url="http://framework.zend.com/about/components">omówienie komponentów</ulink>.
            Wprowadzenie "QuickStart" stanowi wstęp do poznania najczęściej używanych komponentów
            Zend Framework, takich jak:
            <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>, oraz kilku klas pomocniczych (view helpers).
        </para>

        <para>
            Za pomocą tych komponentów w ciągu kilkudziesięciu minut zostanie utworzona
            prosta aplikacja oparta na bazie danych - księga gości (guest book). Pełny kod
            źródłowy tej aplikacji jest dostępny w następujących archiwach:
        </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>
            Tak więc, czym dokładnie jest ten będący na ustach wszystkich wzorzec
            <acronym>MVC</acronym>? I dlaczego miałoby to mnie obchodzić?
            <acronym>MVC</acronym> to o wiele więcej niż kolejny skrót,
            który można mimowolnie wplatać w wypowiedź aby spróbować wywrzeć wrażenie na innych;
            z biegiem czasu <acronym>MVC</acronym> nie bez przyczyny stał się standardem
            projektowania nowoczesnych aplikacji webowych.
            Większość aplikacji sieciowych opiera się w znacznej mierze
            na funkcjonalnościach, które można podzielić na trzy kategorie: warstwa prezentacji,
            logika biznesowa, dostęp do danych.
            Wzorzec <acronym>MVC</acronym> ułatwia zaprojektowanie oprogramowania z
            zachowaniem odrębności każdej z tych warstw.
            W efekcie kod prezentacji może zostać umieszczony w jednej części aplikacji,
            logika biznesowa w drugiej, a dostęp do danych w trzeciej.
            Wielu programistów przekonało się, że dobrze zdefiniowane odseparowanie jest
            nieodzowne dla utrzymania kodu w zorganizowanej
            strukturze, zwłaszcza przy projektach wieloosobowych.
        </para>

        <note>
            <title>Więcej informacji</title>

            <para>
                Omawiany wzorzec można podzielić na następujące części:
            </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>Model</emphasis> - Ta część aplikacji definiuje jej podstawowe
                        funkcjonalności w sposób mniej lub bardziej abstrakcyjny. Sposób dostępu
                        do danych oraz logika biznesowa również mogą być zdefiniowane w tym miejscu.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>View (Widok)</emphasis> - Ten element definiuje wszystko to co
                        zostaje zaprezentowane użytkownikowi. Najczęściej kontrolery przekazują
                        dane do każdego z widoków do uformowania i przedstawienia w określonym
                        formacie. Poprzez widoki następuje również odebranie danych od użytkownika.
                        W tej części będzie się znajdował kod HTML aplikacji <acronym>MVC</acronym>.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>Controller (Kontroler)</emphasis> - Ten składnik łączy cały
                        wzorzec razem. Kontrolery manipulują modelami, decydują o widoku, jaki
                        zostanie zaprezentowany (na podstawie interakcji z użytkownikiem).
                        Odpowiadają także za przekazanie danych do widoków lub przekazanie
                        kontroli do innego kontrolera. Większość ekspertów MVC zaleca
                    <ulink url="http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model">
                        tworzenie możliwie jak najmniejszych kontrolerów</ulink>.
                    </para>
                </listitem>
            </itemizedlist>

            <para>
                Oczywiście, aby zgłębić temat wzorca <acronym>MVC</acronym>
                <ulink url="http://ootips.org/mvc-pattern.html">należałoby go rozwinąć</ulink>
                ale dla zrozumienia opisywanej aplikacji - księgi gości - powyższy, minimalny
                opis powinien wystarczyć.
            </para>
        </note>
    </sect2>
</sect1>
