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

    <para>
        <classname>Zend_Application_Bootstrap_BootstrapAbstract</classname> es
        una clase abstracta que proporciona la base funcional de un arranque
        (bootstrap) común. Implementa a ambos
        <link linkend="zend.application.core-functionality.bootstrap-bootstrapper">
            Zend_Application_Bootstrap_Bootstrapper</link> y a <link
            linkend="zend.application.core-functionality.bootstrap-resourcebootstrapper">
           <classname>Zend_Application_Bootstrap_ResourceBootstrapper</classname></link>.
    </para>

    <table id="zend.application.core-functionality.bootstrap-bootstrapabstract.api.table">
        <title>Métodos de Zend_Application_Bootstrap_BootstrapAbstract</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($application)</methodname></entry>
                    <entry><methodname>void</methodname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$application</varname>: <emphasis>requerido</emphasis>.
                            Acepta tanto a <classname>Zend_Application</classname> o al
                            objeto <classname>Zend_Application_Bootstrap_Bootstrapper</classname>
                            como único argumento.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Constructor. Acepta un solo argumento, que debe ser un
                        objeto <classname>Zend_Application</classname>, u otro
                        objeto bootstrap.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>setOptions(array $options)</methodname></entry>
                    <entry><classname>Zend_Application_Bootstrap_Bootstrapper</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$options</varname>: <emphasis>requerido</emphasis>.
                            Array de opciones a establecer.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry>
                    <para>
                        Cualquier opción que tiene un setter concordante invocará
                        ese setter; de lo contrario, la opción será simplemente
                        almacenada para su recuperación posterior.
                        Como ejemplo, si su clase extendida definió
                        un método  <methodname>setFoo()</methodname>, la opción 'foo'
                        pasaría el valor a ese método.
                    </para>
                    <para>
                        También pueden usarse dos opciones especiales clave.
                        <property>pluginPaths</property> puede ser utilizada para
                        especificar prefijos de paths para los recursos plugin;
                        debería ser un array de la clase pares prefijo/path.
                        <property>resources</property> puede ser utilizada para
                        especificar los recursos plugin a utilizar,
                        y debería estar constituído por pares de opciones plugin
                        recurso/instanciación.
                    </para>
                    </entry>
                </row>

                <row>
                    <entry><methodname>getOption()</methodname></entry>
                    <entry><type>array</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Devuelve todas las opciones registradas via
                        <methodname>setOptions()</methodname>.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>hasOption($key)</methodname></entry>
                    <entry><type>boolean</type></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$key</varname>: <emphasis>requerido</emphasis>.
                            Clave de opción a probar.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>Determinar si una opción clave está presente.</para></entry>
                </row>

                <row>
                    <entry><methodname>getOption($key)</methodname></entry>
                    <entry><type>mixed</type></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <methodname>$key</methodname>: <emphasis>requerido</emphasis>.
                            Clave de opción para recuperar.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Recuperar el valor asociado con una opción clave;
                        retorna <constant>NULL</constant> si ninguna opción está registrada con
                        esa clave.
                    </para></entry>
                </row>

                <row>
                    <entry>
                        <methodname>setApplication(Zend_Application |
                            Zend_Application_Bootstrap_Bootstrapper $application)
                        </methodname>
                    </entry>
                    <entry>
                        <classname>Zend_Application_Bootstrap_BootstrapAbstract</classname>
                    </entry>
                    <entry><itemizedlist>
                            <listitem><para>
                                <varname>$application</varname>: <emphasis>requerido</emphasis>.
                            </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Registrar al objeto padre de la aplicación o en el bootstrap.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getApplication()</methodname></entry>
                    <entry><classname>Zend_Application |
                            Zend_Application_Bootstrap_Bootstrapper</classname></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Recuperar el objeto aplicación/bootstrap pasado via
                        constructor.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getEnvironment()</methodname></entry>
                    <entry><type>string</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Recuperar el string del entorno registrado
                        con el objeto padre de la aplicación o del bootstrap.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getClassResources()</methodname></entry>
                    <entry><type>array</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Recuperar una lista de los recursos inicializadores de
                        nombres disponibles con los fueron definidos en la clase.
                        Esto puede ser de implementación específica.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getContainer()</methodname></entry>
                    <entry><type>object</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Recupera el contenedor que almacena recursos.
                        Si no hay un contenedor actualmente registrado,
                        registra una instancia
                        <link linkend="zend.registry">Zend_Registry</link>
                        antes de retornarlo.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>setContainer($container)</methodname></entry>
                    <entry><classname>Zend_Application_Bootstrap_BootstrapAbstract</classname></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$container</varname>, <emphasis>requerido</emphasis>.
                            Un objeto en el cual almacenar recursos.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Proporciona un contenedor en el que se almacenan recursos.
                        Cuando un método de recurso o plugin devuelve un valor,
                        será almacenado en este contenedor para su recuperación
                        posterior.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>hasResource($name)</methodname></entry>
                    <entry><type>boolean</type></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <methodname>$name</methodname>, <emphasis>requerido</emphasis>.
                            Nombre del recurso a comprobar.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Cuando un método de recurso o plugin devuelve un valor,
                        será almacenado en el contenedor de recursos (ver
                        <methodname>getContainer()</methodname> y
                        <methodname>setContainer()</methodname>. Este método indicará si
                        se ha establecido o no un valor para ese recurso.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>getResource($name)</methodname></entry>
                    <entry><type>mixed</type></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$name</varname>, <emphasis>requerido</emphasis>.
                            Nombre del recurso a recuperar.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Cuando un método de recurso o plugin devuelve un valor,
                        será almacenado en el contenedor de recursos (ver
                        <methodname>getContainer()</methodname> y
                        <methodname>setContainer()</methodname>. Este método recuperará
                        recursos del contenedor.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>bootstrap($resource = null)</methodname></entry>
                    <entry><type>mixed</type></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$resource</varname>: <emphasis>opcional</emphasis>.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry>
                    <para>
                        Si <varname>$resource</varname> está vacío, ejecutar todos
                        los recursos del bootstrap.
                        Si es un string, ejecutar ese único recurso;
                        si es un array, ejecutar cada recurso del array.
                    </para>

                    <para>
                        Este método puede ser utilizado para ejecutar
                        bootstraps individuales, ya hayan sido definidos en la
                        propia clase o mediante clases de recursos de plugin.
                        Un recurso definido en la clase será ejecutado en
                        preferencia por sobre un recurso de plugin en el caso
                        de conflicto de nombres.
                    </para>
                    </entry>
                </row>

                <row>
                    <entry><methodname>run()</methodname></entry>
                    <entry><type>void</type></entry>
                    <entry>N/A</entry>
                    <entry><para>
                        Define qué lógica de aplicación ejecutar luego del
                        bootstrap.
                    </para></entry>
                </row>

                <row>
                    <entry><methodname>__call($method, $args)</methodname></entry>
                    <entry><type>mixed</type></entry>
                    <entry><itemizedlist>
                        <listitem><para>
                            <varname>$method</varname>: <emphasis>requerido</emphasis>.
                            El nombre del método a llamar.
                        </para></listitem>

                        <listitem><para>
                            <varname>$args</varname>: <emphasis>requerido</emphasis>.
                            Array de argumentos para usar en el método de llamada.
                        </para></listitem>
                    </itemizedlist></entry>
                    <entry><para>
                        Ofrece comodidad para bootstrapping de recursos
                        individuales permitiéndole llamar
                        'bootstrap&lt;ResourceName&gt;()' en vez de usar el
                        método <methodname>bootstrap()</methodname>.
                    </para></entry>
                </row>
            </tbody>
        </tgroup>
    </table>
</sect2>
