<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="learning.quickstart.intro">
    <title>Introdução ao Zend Framework e ao MVC</title>

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

        <para>
            Zend Framework é um framework para aplicações Web orientado a objetos e de código aberto
            para <acronym>PHP</acronym> 5. Zend Framework é geralmente chamado de "biblioteca de
            componentes", porque tem muitos componentes fracamente acoplados que você pode usar de
            forma mais ou menos independente. Mas o Zend Framework também fornece uma avançada
            implementação Model-View-Controller (<acronym>MVC</acronym>) que pode ser usada para
            estabelecer uma estrutura básica para seus aplicativos Zend Framework. Uma lista
            completa dos componentes do Zend Framework, juntamente com uma breve descrição pode ser
            encontrada na <ulink url="http://framework.zend.com/about/components">visão geral dos
                componentes</ulink>. Este Início Rápido irá apresentá-lo a alguns dos componentes do
            Zend Framework mais comumente usados, incluindo <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> juntamente com alguns assistentes de visualização.
        </para>

        <para>
            Usando esses componentes, vamos construir um simples aplicativo de livro de visitas
            movido a banco de dados em poucos minutos. O código fonte completo para esta aplicação
            está disponível nos seguintes arquivos:
        </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>
            Então o que é exatamente este padrão <acronym>MVC</acronym> que todos estão falando, e
            por que você deveria se preocupar? <acronym>MVC</acronym> é muito mais do que apenas uma
            sigla de três letras (<acronym>TLA</acronym>), que você pode sacar sempre que quiser
            parecer esperto, tornou-se parte de uma norma nos projetos de aplicações Web modernas. E
            por uma boa razão. A maioria do código de aplicações Web está sob uma das três
            categorias seguintes: apresentação, lógica de negócios e acesso aos dados. Nos modelos
            do padrão <acronym>MVC</acronym> esta separação relaciona-se bem. O resultado final é
            que seu código de apresentação pode ser consolidado em uma parte de sua aplicação com
            sua lógica de negócio em outra parte e seu código de acesso aos dados também em outra.
            Muitos desenvolvedores descobriram que essa separação bem definida é indispensável para
            manter seus códigos organizados, especialmente quando mais do que um desenvolvedor está
            trabalhando em uma mesma aplicação.
        </para>

        <note>
            <title>Mais Informações</title>

            <para>
                Vamos decompor o padrão e dar um olhada nas peças individuais:
            </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> - Esta é a parte de sua aplicação que define sua
                        funcionalidade básica por trás de um conjunto de abstrações. Rotinas de
                        acesso a dados e alguma lógica de negócio podem ser definidos no modelo.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>View</emphasis> - Apresentações definem exatamente o que será
                        apresentado ao usuário. Geralmente os controladores passam os dados para
                        cada apresentação interpretá-los em algum formato. Apresentações também
                        coletam frequentemente os dados do usuário. É aqui que você provavelmente
                        encontrará a marcação <acronym>HTML</acronym> nas suas aplicações
                        <acronym>MVC</acronym>.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis>Controller</emphasis> - Controladores vinculam todo o padrão em um
                        conjunto. Eles manipulam modelos, decidem qual apresentação será exibida
                        baseados em solicitações do usuário e em outros fatores, repassam os dados
                        que cada apresentação necessita, ou transfere completamente o controle para
                        outro controlador. A maioria dos especialistas em <acronym>MVC</acronym>
                        recomendam <ulink
                            url="http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model">manter
                            os controladores o mais simples possível</ulink>.
                    </para>
                </listitem>
            </itemizedlist>

            <para>
                Claro que há <ulink url="http://ootips.org/mvc-pattern.html">mais a ser dito</ulink>
                sobre esse padrão fundamental, mas isso deve dar-lhe conhecimento suficiente para
                entender a aplicação de livro de visitas que vamos construir.
            </para>
        </note>
    </sect2>
</sect1>
