<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 17171 -->
<!-- Reviewed: no -->
<sect2 id="zend.application.core-functionality.application">
    <title>Zend_Application</title>

    <para>
        <classname>Zend_Application</classname>  proporciona la funcionalidad
        básica del componente, y el punto de entrada a su aplicación
        Zend Framework. Su propósito es doble: para configurar el medio ambiente
        <acronym>PHP</acronym> (incluyendo autocarga), y ejecutar su aplicación bootstrap.
    </para>

    <table id="zend.application.core-functionality.application.api.options">
        <title>Zend_Application options</title>
        <tgroup cols="2">
            <thead>
                <row>
                    <entry>Option</entry>
                    <entry>Description</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry><emphasis><property>phpSettings</property></emphasis></entry>
                    <entry><para>
                        Array of <filename>php.ini</filename> settings to use. Keys should be the
                        <filename>php.ini</filename> keys.
                    </para></entry>
                </row>
                
                <row>
                    <entry><emphasis><property>includePaths</property></emphasis></entry>
                    <entry><para>
                        Additional paths to prepend to the
                        <emphasis>include_path</emphasis>. Should be an array of paths.
                    </para></entry>
                </row>
                
                <row>
                    <entry><emphasis><property>autoloaderNamespaces</property></emphasis></entry>
                    <entry><para>
                        Array of additional namespaces to register with the
                        <classname>Zend_Loader_Autoloader</classname> instance.
                    </para></entry>
                </row>
                
                <row>
                    <entry><emphasis><property>bootstrap</property></emphasis></entry>
                    <entry><para>
                        Either the string path to the bootstrap class, or an array
                        with elements for the 'path' and 'class' for the application
                        bootstrap.
                    </para></entry>
                </row>
            </tbody>
        </tgroup>
    </table>
    
    <note>
        <title>Option names</title>
        
        <para>
            Please note that option names are case insensitive.
        </para>
    </note>

    <para>
        Típicamente, pasará toda la configuración al constructor
        <classname>Zend_Application</classname>, pero también puede configurar
        totalmente el objeto utilizando sus propios métodos. En esta referencia 
        se ilustran ambos casos de uso.
    </para>

    <table id="zend.application.core-functionality.application.api.table">
        <title>Métodos de Zend_Application</title>
        <tgroup cols="4">
            <thead>
                <row>
                    <entry>Método</entry>
                    <entry>Valor de Retorno</entry>
                    <entry>Parámetros</entry>
                    <entry>Descripción</entry>
                </row>
            </thead>
            <tbody>
                <row>
                    <entry>
                        <methodname>__construct($environment, $options = null)</methodname>
                    </entry>
                    <entry><type>Void</type></entry>
                    <entry><itemizedlist>
                            <listitem><para>
                                <varname>$environment</varname>: <emphasis>requerido</emphasis>,.
                                String que representa el actual entorno de aplicación.
                                Strings típicos podrían incluir "desarrollo",
                                "pruebas", "qa", o "producción", pero será definido
                                por sus requisitos organizacionales.
                            </para></listitem>

                            <listitem>
                            <para>
                                <varname>$options</varname>>: <emphasis>opcional</emphasis>.
                                El argumento puede ser uno de los siguientes valores:
                            </para>
                            <itemizedlist>
                                <listitem><para>
                                    <emphasis>String</emphasis>: path
                                    al archivo <classname>Zend_Config</classname>
                                    para cargarlo como donfiguración de su
                                    aplicación.
                                    <methodname>$environment</methodname> se utilizará para
                                    determinar qué sección de la configuración
                                    se traerá.
                                </para></listitem>

                                <listitem><para>
                                    <emphasis><type>Array</type></emphasis>: array asociativo
                                    de datos de configuración para su aplicación.
                                </para></listitem>

                                <listitem><para>
                                    <emphasis><classname>Zend_Config</classname></emphasis>:
                                    instancia del objeto de configuración.
                                </para></listitem>
                            </itemizedlist>
                        </listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Constructor. Los argumentos son como se describe,
                        y será utilizado para establecer el estado incial del
                        objeto. Una instancia de
                        <classname>Zend_Loader_Autoloader</classname>
                        es registrada durante la instanciación.
                        Las opciones pasadas al onstructor se pasan a
                        <methodname>setOptions()</methodname>.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getEnvironment()</methodname></entry>
                    <entry><methodname>string</methodname></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Recuperar el string del medio ambiente que se pasó al
                        constructor.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getAutoloader()</methodname></entry>
                    <entry><classname>Zend_Loader_Autoloader</classname></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Recuperar la instancia de
                        <classname>Zend_Loader_Autoloader</classname>
                        registrados durante la instanciación.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>setOptions(array $options)</methodname></entry>
                    <entry><classname>Zend_Application</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <methodname>$options</methodname>: <emphasis>requerido</emphasis>.
                            Un array de opciones de aplicación.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Todas las opciones se almacenan internamente, y llamando
                        al método varias veces las opciones se fusionarán.
                        Las opciones concordantes con los diversos métodos
                        setter se pasarán a esos métodos.
                        Como ejemplo, la opción "phpSettings" será pasada a
                        <methodname>setPhpSettings()</methodname>.
                        (Los nombres de opciones son indiferentes a mayúsculas/
                        minúsculas.)
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getOptions()</methodname></entry>
                    <entry><methodname>array</methodname></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Recuperar todas las opciones usadas para inicializar el
                        objeto; podría ser utilizada para guardar en cache a
                        través de <classname>Zend_Config</classname> las
                        opciones para serializar un formato entre reqerimientos.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>hasOption($key)</methodname></entry>
                    <entry><type>Boolean</type></entry>
                    <entry>
                    <itemizedlist>
                        <listitem><para>
                            <varname>$key</varname>: String opcional de la clave de lookup
                        </para></listitem>
                    </itemizedlist>
                    </entry>
                    <entry><para>
                        Determinar si una opción con la clave ha sido registrada
                        o no. Las claves son indiferentes a mayúsculas/
                        minúsculas.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getOption($key)</methodname></entry>
                    <entry><methodname>mixed</methodname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$key</varname>: String opcional de la clave de lookup
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Recuperar el valor de la opción de una clave dada.
                        Retorna <constant>NULL</constant> si la clave no existe.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>setPhpSettings(array $settings, $prefix = '')</methodname></entry>
                    <entry><classname>Zend_Application</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$settings</varname>: <emphasis>requerido</emphasis>.
                            Array asociativo en los settings de <acronym>PHP</acronym>  <acronym>INI</acronym>.
                        </para></listitem>

                        <listitem><para>
                            <varname>$prefix</varname>: <emphasis>opcional</emphasis>.
                            Prefijo de tipo string para anteponer a la opción
                            claves. Usado internamente para permitir el mapping 
                            anidado de matrices separados por puntos en las
                            claves de <filename>php.ini</filename>.
                            En el uso normal, este argumento nunca debe ser
                            pasado por un usuario.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Establece un conjunto de ajustaes en <filename>php.ini</filename>. para run-time. 
                        Las configuraciones separadas por punto pueden ser
                        anidadas jerárquicamente
                        (lo que puede ocurrir con los archivos <acronym>INI</acronym>
                        <classname>Zend_Config</classname>) mediante un array de
                        de arrays, y aún resolver correctamente.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>setAutoloaderNamespaces(array $namespaces)</methodname></entry>
                    <entry><classname>Zend_Application</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$namespaces</varname>: <emphasis>requerido</emphasis>.
                            Array de strings representando los namespaces a
                            registrar con la instancia
                            <classname>Zend_Loader_Autoloader</classname>.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Registra los namespaces con la instancia
                        <classname>Zend_Loader_Autoloader</classname>.
                      </para></entry>
                </row>

                <row>
                    <entry><methodname>setBootstrap($path, $class = null)</methodname></entry>
                    <entry><classname>Zend_Application</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$path</varname>:: <emphasis>requerido</emphasis>.
                            Puede ser tanto una instancia de
                            <classname>Zend_Application_Bootstrap_Bootstrapper
                            </classname>, un string del path a la clase bootstrap,
                            un arrray asociativo de classname =&gt;nombre_de_archivo,
                            o un array asociativo con las claves 'class' y 'path'.
                        </para></listitem>

                        <listitem><para>
                            <varname>$class</varname>: <emphasis>opcional</emphasis>.
                            Si <varname>$path</varname>: es un string, entonces
                            <varname>$class</varname> puede ser especificado,
                            y debe ser el string nombre de clase de la
                            clase contenida en el archivo representado por path.
                        </para></listitem>
                    </itemizedlist></entry>
                </row>

                <row>
                    <entry><methodname>getBootstrap()</methodname></entry>
                    <entry><methodname>null | Zend_Application_Bootstrap_Bootstrapper</methodname></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Recuperar la instancia del bootstrap registrado.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>bootstrap()</methodname></entry>
                    <entry><methodname>void</methodname></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Llamar al método <methodname>bootstrap()</methodname>
                        para cargar la aplicación.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>run()</methodname></entry>
                    <entry><methodname>void</methodname></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Llamar al método <methodname>run()</methodname> del bootstrap
                        para despachar la aplicación.
                    </para></entry>
                </row>
            </tbody>
        </tgroup>
    </table>
</sect2>
