<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 19912 -->
<!-- Reviewed: no -->
<sect1 id="learning.quickstart.intro">
    <title>Introducción a MVC &amp; ZF</title>

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

        <para>
            Zend Framework es un framework de código abierto y orientado a objectos para facilitar
            el desarrollo de aplicaciones web con <acronym>PHP</acronym> 5.
            A menudo es considerado una 'biblioteca de componentes', debido a que estos poseen bajo
            acoplamiento entre sí lo cual permite reutilizarlos con un alto grado de independencia. Proporciona
            además una sofisticada implementación del patrón Modelo-Vista-Controlador 
            (<acronym>MVC</acronym>) el cual puede
            ser utilizado para fijar la estructura básica de las aplicaciones desarrolladas con el framework.
            Encontrarás la lista completa de los componentes de Zend Framework junto a
            breves descripciones de los mismos en la
            <ulink url="http://framework.zend.com/about/components">lista de componentes</ulink>.
            En este tutorial te ayudaremos a familiarizarte con aquellos componentes del framework
            utilizados de manera más frecuente incluyendo
            <classname>Zend_Controller</classname>, <classname>Zend_Layout</classname>,
            <classname>Zend_Config</classname>, <classname>Zend_Db</classname>,
            <classname>Zend_Db_Table</classname> y <classname>Zend_Registry</classname>.
        </para>

        <para>
            Utilizando dichos componentes construiremos en pocos minutos una sencilla aplicación de ejemplo
            en la cual nos serviremos de una base de datos para registrar los comentarios que dejen los usuarios
            de un sitio web. Puedes descargar el código fuente completo para
            esta aplicación de los siguientes enlaces:
        </para>

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

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

    <sect2 id="learning.quickstart.intro.mvc">
        <title>Modelo-Vista-Controlador</title>

        <para>
            En resumen ¿qué es exactamente el patrón <acronym>MVC</acronym> del que tanto hablan? ¿y por qué
            debería importarte? <acronym>MVC</acronym> no es sólo un acrónimo de tres letras (<acronym>TLA</acronym>) que puedes utilizar
            para impresionar a tus amigos, actualmente <acronym>MVC</acronym> se ha convertido en un estándar
            para el diseño de las aplicaciones web modernas. Y por buenas razones ya que
            ayuda a modelar de forma precisa la separación de intereses permitiendo agrupar
            en distintas partes de la aplicación el código que se relaciona con la presentación,
            el que implementa la lógica de negocios y el que accede a los datos.
            Muchos desarrolladores encuentran indispensable dicha separación para ayudarlos a mantener
            su código organizado, especialmente cuando más de un desarrollador se encuentra
            trabajando en la misma aplicación.
        </para>

        <note>
            <title>Más información</title>

            <para>
                Profundicemos un poco y veamos cada parte de este patrón por separado:
            </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 role="strong">Modelo</emphasis> - ofrece las funcionalidades básicas
                        de la aplicación incluyendo las rutinas de acceso a datos y la lógica de negocios.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis role="strong">Vista</emphasis> - se encarga de generar lo que se presenta
                        al usuario a partir de los datos que recibe del controlador, al mismo tiempo que recogen
                        los datos que brindan los usuarios. Es la parte de la aplicación donde encontrarás el <acronym>HTML</acronym>.
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <emphasis role="strong">Controlador</emphasis> - son los que unen el patrón.
                        Según el pedido del usuario y otras variables ellos pueden decidir ejecutar
                        otro controlador o manipular los datos del modelo para luego asignarle el resultado
                        a una vista en particular.
                        Muchos expertos en <acronym>MVC</acronym> recomiendan <ulink
                            url="http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model">mantener
                            el controlador lo más limpio posible</ulink>.
                    </para>
                </listitem>
            </itemizedlist>

            <para>
                Podríamos <ulink url="http://ootips.org/mvc-pattern.html">extendernos aún más</ulink>
                sobre este patrón pero por ahora ya posees los conocimientos suficientes
                que te permitirán entender la aplicación que vamos a construir.
            </para>
        </note>
    </sect2>
</sect1>
