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

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

        <para>
            Zend Framework est un cadre de travail open source orienté objets pour des applications
            web basées sur <acronym>PHP</acronym> 5. Zend Framework est souvent appelé une
            "bibliothèque de composants" car ses composants sont faiblement couplés et vous
            pouvez les utiliser de manière plus ou moins indépendante. Mais Zend Framework propose
            aussi une solution avancée Model-View-Controller (<acronym>MVC</acronym>) qui peut être
            utilisée pour monter des structures de base pour vos applications. Une liste complète
            des composants de Zend Framework avec une brève description peut être trouvée dans
            <ulink url="http://framework.zend.com/about/components">l'aperçu des composants</ulink>.
            Ce guide de démarrage montre les composants les plus utilisés dans Zend Framework, comme
            <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>, ainsi que
            quelques aides de vue.
        </para>

        <para>
            En utilisant ces composants nous allons construire un livre d'or reposant sur une base
            de données, simple, en quelques minutes. Le code source complet pour cette application
            est disponible dans les formats&#160;:
        </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>
            Qu'est ce que <acronym>MVC</acronym> dont tout le monde parle et pourquoi se pencher
            dessus&#160;? <acronym>MVC</acronym> est bien plus qu'un acronyme de trois lettres
            (<acronym>TLA</acronym>) que vous pouvez sortir pour faire "élégant"&#160;; c'est
            devenu un standard de conception des applications Web modernes, ceci pour de bonnes
            raisons. La plupart du code des application se retrouvent dans une de ces
            catégories&#160;: présentation, logique métier, accès aux données. Le pattern
            <acronym>MVC</acronym> modélise cette séparation à merveille. Le résultat final est
            qu'un code de présentation peut être travaillé à un endroit de l'application alors que
            la logique métier et l'accès aux données le sont à d'autres endroits. La plupart des
            développeurs ont trouvé cette séparation indispensable pour maintenir le code global
            organisé, particulièrement lorsque plusieurs développeurs travaillent ensemble sur la
            même application.
        </para>

        <note>
            <title>Plus d'informations</title>

            <para>
                Cassons le pattern pour voir les pièces individuellement&#160;:
            </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> - C'est la partie qui définit la fonctionnalité
                        de base de l'application derrière des abstractions. L'accès aux données
                        et la logique métier sont définis dans cette couche.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>View</emphasis> - La vue définit exactement ce qui sera présenté à
                        l'utilisateur. Normalement les contrôleurs passent des données à chaque vue
                        à rendre dans un format précis. Les vues collectent les données de
                        l'utilisateur aussi. Ici vous trouverez principalement du
                        <acronym>HTML</acronym>.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>Controller</emphasis> - Les contrôleurs sont la colle qui lie
                        tout. Ils manipulent les modèles, décident de la vue à rendre en fonction
                        de la requête utilisateur et d'autres facteurs, passent les données dont
                        chaque vue a besoin et passent éventuellement la main à un autre contrôleur.
                        La plupart des experts <acronym>MVC</acronym> experts recommandent <ulink
                            url="http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model">de
                            garder les contrôleurs les plus simples et petits possibles</ulink>.
                    </para>
                </listitem>
            </itemizedlist>

            <para>
                Bien sûr <ulink url="http://ootips.org/mvc-pattern.html">on pourrait en dire plus
                </ulink> sur ce pattern critique, mais nous avons là suffisament d'informations
                pour comprendre l'application de livre d'or que nous allons construire.
            </para>
        </note>
    </sect2>
</sect1>
