TigerZF
🌐Español

14.5. Funcionalidad principal

Aquí encontrará documentación de tipo API sobre todos los componentes principales de Zend_Application.

14.5.1. Zend_Application

Zend_Application proporciona la funcionalidad base del componente, y el punto de entrada a su aplicación de Zend Framework. Su propósito es doble: configurar el entorno de PHP (incluyendo la autocarga), y ejecutar el bootstrap de su aplicación.

Normalmente, pasará toda la configuración al constructor de Zend_Application, pero también puede configurar el objeto por completo usando sus propios métodos. Esta referencia pretende ilustrar ambos casos de uso.

Tabla 14.1. Opciones de Zend_Application

Opción Descripción
phpSettings

Array de configuraciones de php.ini a usar. Las claves deben ser las claves de php.ini.

includePaths

Rutas adicionales a anteponer al include_path. Debe ser un array de rutas.

autoloaderNamespaces

Array de espacios de nombres adicionales a registrar con la instancia de Zend_Loader_Autoloader.

bootstrap

Ya sea la ruta en forma de cadena a la clase de bootstrap, o un array con elementos para 'path' y 'class' para el bootstrap de la aplicación.


[Note] Nombres de opciones

Tenga en cuenta que los nombres de las opciones no distinguen entre mayúsculas y minúsculas.

Tabla 14.2. Métodos de Zend_Application

Método Valor de retorno Parámetros Descripción
__construct($environment, $options = null) Void
  • $environment: requerido,. Cadena que representa el entorno actual de la aplicación. Las cadenas típicas pueden incluir "development", "testing", "qa", o "production", pero serán definidas por los requisitos de su organización.

  • $options: opcional. El argumento puede ser uno de los siguientes valores:

    • String: ruta a un archivo Zend_Config a cargar como configuración para su aplicación. $environment se usará para determinar qué sección de la configuración extraer.

      A partir de la versión 1.10, también puede pasar múltiples rutas que contengan archivos de configuración para fusionarlos en una sola configuración. Esto ayuda a reducir la duplicación de configuración entre muchos contextos que comparten ajustes comunes (por ejemplo, configuraciones para HTTP, o CLI, cada una compartiendo algunas características pero con sus propios valores en conflicto para otras) o simplemente dividiendo una configuración larga en muchos archivos más pequeños y categorizados. El parámetro en este caso es un array con una única clave "config" cuyo valor es un array de los archivos a fusionar. Nota: esto significa que se pasa una ruta literal, o array("config"=>array("/path1","/path2"[,...]));.

    • Array: array asociativo de datos de configuración para su aplicación.

    • Zend_Config: instancia de objeto de configuración.

Constructor. Los argumentos son como se describe, y se usarán para establecer el estado inicial del objeto. Se registra una instancia de Zend_Loader_Autoloader durante la instanciación. Las opciones pasadas al constructor se pasan a setOptions().

getEnvironment() String N/A

Recupera la cadena de entorno pasada al constructor.

getAutoloader() Zend_Loader_Autoloader N/A

Recupera la instancia de Zend_Loader_Autoloader registrada durante la instanciación.

setOptions(array $options) Zend_Application
  • $options: requerido. Un array de opciones de la aplicación.

Todas las opciones se almacenan internamente, y llamar al método varias veces fusionará las opciones. Las opciones que coincidan con los distintos métodos setter se pasarán a esos métodos. Por ejemplo, la opción "phpSettings" se pasará a setPhpSettings(). (Los nombres de las opciones no distinguen entre mayúsculas y minúsculas).

getOptions() Array N/A

Recupera todas las opciones usadas para inicializar el objeto; podría usarse para almacenar en caché opciones de Zend_Config en un formato serializado entre peticiones.

hasOption($key) Boolean
  • $key: clave de opción de tipo cadena a buscar

Determina si se ha registrado o no una opción con la clave especificada. Las claves no distinguen entre mayúsculas y minúsculas.

getOption($key) Mixed
  • $key: clave de opción de tipo cadena a buscar

Recupera el valor de la opción de una clave dada. Devuelve NULL si la clave no existe.

setPhpSettings(array $settings, $prefix = '') Zend_Application
  • $settings: requerido. Array asociativo de configuraciones INI de PHP.

  • $prefix: opcional. Cadena de prefijo con la que anteponer las claves de opción. Se usa internamente para permitir mapear arrays anidados a claves de php.ini separadas por puntos. En el uso normal, este argumento nunca debe ser pasado por un usuario.

Establece configuraciones de php.ini en tiempo de ejecución. Las configuraciones separadas por puntos pueden anidarse jerárquicamente (lo cual puede ocurrir con archivos INI de Zend_Config) mediante un array de arrays, y aun así se resolverán correctamente.

setAutoloaderNamespaces(array $namespaces) Zend_Application
  • $namespaces: requerido. Array de cadenas que representan los espacios de nombres a registrar con la instancia de Zend_Loader_Autoloader.

Registra espacios de nombres con la instancia de Zend_Loader_Autoloader.

setBootstrap($path, $class = null) Zend_Application
  • $path: requerido. Puede ser una instancia de Zend_Application_Bootstrap_Bootstrapper, una cadena con la ruta a la clase de bootstrap, un array asociativo de classname => filename, o un array asociativo con las claves 'class' y 'path'.

  • $class: opcional. Si $path es una cadena, se puede especificar $class, y debería ser una cadena con el nombre de la clase contenida en el archivo representado por path.

getBootstrap() NULL | Zend_Application_Bootstrap_Bootstrapper N/A

Recupera la instancia de bootstrap registrada.

bootstrap() Void N/A

Llama al método bootstrap() del bootstrap para inicializar la aplicación.

run() Void N/A

Llama al método run() del bootstrap para despachar la aplicación.


14.5.2. Zend_Application_Bootstrap_Bootstrapper

Zend_Application_Bootstrap_Bootstrapper es la interfaz base que todas las clases de bootstrap deben implementar. La funcionalidad base está orientada a la configuración, la identificación de recursos, el bootstrapping (ya sea de recursos individuales o de la aplicación completa), y el despacho de la aplicación.

Los siguientes métodos conforman la definición de la interfaz.

Tabla 14.3. Interfaz Zend_Application_Bootstrap_Bootstrapper

Método Valor de retorno Parámetros Descripción
__construct($application) Void
  • $application: requerido. Debe aceptar un objeto Zend_Application o un objeto Zend_Application_Bootstrap_Bootstrapper como único argumento.

Constructor. Acepta un único argumento, que debe ser un objeto Zend_Application, u otro objeto de bootstrap.

setOptions(array $options) Zend_Application_Bootstrap_Bootstrapper
  • $options: requerido. Array de opciones a establecer.

Normalmente, cualquier opción que tenga un setter coincidente invocará ese setter; de lo contrario, la opción simplemente se almacenará para su recuperación posterior.

getApplication() Zend_Application | Zend_Application_Bootstrap_Bootstrapper N/A

Recupera el objeto de aplicación o bootstrap pasado mediante el constructor.

getEnvironment() String N/A

Recupera la cadena de entorno registrada con el objeto de aplicación o bootstrap padre.

getClassResources() Array N/A

Recupera una lista de los nombres de inicializadores de recursos disponibles según se definen en la clase. Esto puede depender de la implementación.

bootstrap($resource = null) Mixed
  • $resource: opcional.

Si $resource está vacío, ejecuta todos los recursos de bootstrap. Si es una cadena, ejecuta ese único recurso; si es un array, ejecuta cada recurso del array.

run() Void N/A

Define qué lógica de la aplicación ejecutar después del bootstrapping.


14.5.3. Zend_Application_Bootstrap_ResourceBootstrapper

Zend_Application_Bootstrap_ResourceBootstrapper es una interfaz a usar cuando una clase de bootstrap va a cargar recursos externos -- es decir, uno o más recursos no se definirán directamente en la clase, sino a través de plugins. Debe usarse junto con Zend_Application_Bootstrap_Bootstrapper; Zend_Application_Bootstrap_BootstrapAbstract implementa esta funcionalidad.

Los siguientes métodos conforman la definición de la interfaz.

Tabla 14.4. Interfaz Zend_Application_Bootstrap_ResourceBootstrapper

Método Valor de retorno Parámetros Descripción
registerPluginResource($resource, $options = null) Zend_Application_Bootstrap_ResourceBootstrapper
  • $resource: requerido. Un nombre de recurso u objeto Zend_Application_Resource_Resource.

  • $options: opcional. Un array u objeto Zend_Config a pasar al recurso al instanciarlo.

Registra un recurso con la clase, proporcionando configuración opcional a pasar al recurso.

unregisterPluginResource($resource) Zend_Application_Bootstrap_ResourceBootstrapper
  • $resource: requerido. Nombre de un recurso a eliminar del registro de la clase.

Elimina un recurso de plugin de la clase.

hasPluginResource($resource) Boolean
  • $resource: requerido. Nombre del recurso.

Determina si se ha registrado un recurso específico en la clase.

getPluginResource($resource) Zend_Application_Resource_Resource
  • $resource: requerido. Nombre de un recurso a recuperar (cadena).

Recupera una instancia de recurso de plugin por nombre.

getPluginResourceNames() Array N/A

Recupera una lista de todos los nombres de recursos de plugin registrados.

setPluginLoader(Zend_Loader_PluginLoader_Interface $loader) Zend_Application_Bootstrap_ResourceBootstrapper
  • $loader: requerido. Instancia del cargador de plugins a usar al resolver nombres de plugin a clases.

Registra una instancia del cargador de plugins a usar al resolver nombres de clases de plugin.

getPluginLoader() Zend_Loader_PluginLoader_Interface N/A

Recupera el cargador de plugins registrado.


14.5.4. Zend_Application_Bootstrap_BootstrapAbstract

Zend_Application_Bootstrap_BootstrapAbstract es una clase abstracta que proporciona la funcionalidad base de un bootstrap común. Implementa tanto Zend_Application_Bootstrap_Bootstrapper como Zend_Application_Bootstrap_ResourceBootstrapper.

Tabla 14.5. Métodos de Zend_Application_Bootstrap_BootstrapAbstract

Método Valor de retorno Parámetros Descripción
__construct($application) Void
  • $application: requerido. Acepta ya sea un objeto Zend_Application o un objeto Zend_Application_Bootstrap_Bootstrapper como único argumento.

Constructor. Acepta un único argumento, que debe ser un objeto Zend_Application, u otro objeto de bootstrap.

setOptions(array $options) Zend_Application_Bootstrap_Bootstrapper
  • $options: requerido. Array de opciones a establecer.

Cualquier opción que tenga un setter coincidente invocará ese setter; de lo contrario, la opción simplemente se almacenará para su recuperación posterior. Por ejemplo, si su clase que extiende define un método setFoo(), la opción 'foo' pasará el valor a ese método.

También se pueden usar dos claves de opciones especiales adicionales. pluginPaths se puede usar para especificar prefijos de rutas a recursos de plugin; debe ser un array de pares de prefijo de clase a ruta del sistema de archivos. resources se puede usar para especificar los recursos de plugin a usar, y debe consistir en pares de recurso de plugin a opciones de instanciación.

getOptions() Array N/A

Devuelve todas las opciones registradas mediante setOptions().

hasOption($key) Boolean
  • $key: requerido. Clave de opción a comprobar.

Determina si una clave de opción está presente.

getOption($key) Mixed
  • $key: requerido. Clave de opción a recuperar.

Recupera el valor asociado a una clave de opción; devuelve NULL si no hay ninguna opción registrada con esa clave.

setApplication(Zend_Application | Zend_Application_Bootstrap_Bootstrapper $application) Zend_Application_Bootstrap_BootstrapAbstract
  • $application: requerido.

Registra el objeto de aplicación o bootstrap padre.

getApplication() Zend_Application | Zend_Application_Bootstrap_Bootstrapper N/A

Recupera el objeto de aplicación o bootstrap pasado mediante el constructor.

getEnvironment() String N/A

Recupera la cadena de entorno registrada con el objeto de aplicación o bootstrap padre.

getClassResources() Array N/A

Recupera una lista de los nombres de inicializadores de recursos disponibles según se definen en la clase. Esto puede depender de la implementación.

getContainer() Object N/A

Recupera el contenedor que almacena los recursos. Si no hay ningún contenedor registrado actualmente, registra una instancia de Zend_Registry antes de devolverlo.

setContainer($container) Zend_Application_Bootstrap_BootstrapAbstract
  • $container, requerido. Un objeto en el que almacenar recursos.

Proporciona un contenedor en el que almacenar recursos. Cuando un método o plugin de recurso devuelve un valor, se almacenará en este contenedor para su recuperación posterior.

hasResource($name) Boolean
  • $name, requerido. Nombre de un recurso a comprobar.

Cuando un método o plugin de recurso devuelve un valor, se almacenará en el contenedor de recursos (vea getContainer() y setContainer(). Este método indicará si se ha establecido o no un valor para ese recurso.

getResource($name) Mixed
  • $name, requerido. Nombre de un recurso a obtener.

Cuando un método o plugin de recurso devuelve un valor, se almacenará en el contenedor de recursos (vea getContainer() y setContainer(). Este método recuperará un recurso del contenedor.

bootstrap($resource = null) Mixed
  • $resource: opcional.

Si $resource está vacío, ejecuta todos los recursos de bootstrap. Si es una cadena, ejecuta ese único recurso; si es un array, ejecuta cada recurso del array.

Este método puede usarse para ejecutar bootstraps individuales definidos ya sea en la propia clase o mediante clases de plugin de recurso. Un recurso definido en la clase se ejecutará con preferencia sobre un plugin de recurso en caso de conflictos de nombres.

run() Void N/A

Define qué lógica de la aplicación ejecutar después del bootstrapping.

__call($method, $args) Mixed
  • $method: requerido. El nombre del método a llamar.

  • $args: requerido. Array de argumentos a usar en la llamada al método.

Proporciona la comodidad de inicializar recursos individuales permitiéndole llamar a 'bootstrap<ResourceName>()' en lugar de usar el método bootstrap().


14.5.5. Zend_Application_Bootstrap_Bootstrap

Zend_Application_Bootstrap_Bootstrap es una implementación concreta de Zend_Application_Bootstrap_BootstrapAbstract. Su característica principal es que registra el recurso Front Controller, y que el método run() primero comprueba que se ha definido un módulo por defecto y luego despacha el front controller.

En la mayoría de los casos, querrá extender esta clase para sus necesidades de bootstrapping, o simplemente usar esta clase y proporcionar una lista de plugins de recurso a utilizar.

14.5.5.1. Habilitar la autocarga de la aplicación

Además, esta implementación de bootstrap ofrece la posibilidad de especificar el "espacio de nombres" o prefijo de clase para los recursos ubicados en su árbol, lo cual habilitará la autocarga de varios recursos de la aplicación; esencialmente, instancia un objeto Zend_Application_Module_Autoloader, proporcionando el espacio de nombres solicitado y el directorio del bootstrap como argumentos. Puede habilitar esta funcionalidad proporcionando un espacio de nombres a la opción de configuración "appnamespace". Como ejemplo en INI:

appnamespace = "Application"

O en XML:

<appnamespace>Application</appnamespace>

Por defecto, Zend_Tool habilitará esta opción con el valor "Application".

Alternativamente, puede simplemente definir la propiedad $_appNamespace de su clase de bootstrap con el valor apropiado:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected $_appNamespace = 'Application';
}

14.5.6. Zend_Application_Resource_Resource

Zend_Application_Resource_Resource es una interfaz para plugins de recurso usados con clases de bootstrap que implementan Zend_Application_Bootstrap_ResourceBootstrapper. Se espera que los plugins de recurso permitan configuración, sean conscientes del bootstrap, y implementen un patrón de estrategia para inicializar el recurso.

Tabla 14.6. Interfaz Zend_Application_Resource_Resource

Método Valor de retorno Parámetros Descripción
__construct($options = null) Void
  • $options: opcional. Opciones con las que establecer el estado del recurso.

El constructor debe permitir pasar opciones con las que inicializar el estado.

setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) Zend_Application_Resource_Resource
  • $bootstrap: requerido. Bootstrap padre que inicializa este recurso.

Debe permitir registrar el objeto de bootstrap padre.

getBootstrap() Zend_Application_Bootstrap_Bootstrapper N/A

Recupera la instancia de bootstrap registrada.

setOptions(array $options) Zend_Application_Resource_Resource
  • $options: requerido. Opciones con las que establecer el estado.

Establece el estado del recurso.

getOptions() Array N/A

Recupera las opciones registradas.

init() Mixed N/A

Patrón de estrategia: ejecuta la inicialización del recurso.


14.5.7. Zend_Application_Resource_ResourceAbstract

Zend_Application_Resource_ResourceAbstract es una clase abstracta que implementa Zend_Application_Resource_Resource, y es un buen punto de partida para crear sus propios plugins de recurso personalizados.

Nota: esta clase abstracta no implementa el método init(); esto se deja para su definición en extensiones concretas de la clase.

Tabla 14.7. Métodos de Zend_Application_Resource_ResourceAbstract

Método Valor de retorno Parámetros Descripción
__construct($options = null) Void
  • $options: opcional. Opciones con las que establecer el estado del recurso.

El constructor debe permitir pasar opciones con las que inicializar el estado.

setBootstrap(Zend_Application_Bootstrap_Bootstrapper $bootstrap) Zend_Application_Resource_ResourceAbstract
  • $bootstrap: requerido. Bootstrap padre que inicializa este recurso.

Debe permitir registrar el objeto de bootstrap padre.

getBootstrap() Zend_Application_Bootstrap_Bootstrapper N/A

Recupera la instancia de bootstrap registrada.

setOptions(array $options) Zend_Application_Resource_ResourceAbstract
  • $options: requerido. Opciones con las que establecer el estado.

Establece el estado del recurso.

getOptions() Array N/A

Recupera las opciones registradas.


14.5.7.1. Nombres de recursos

Al registrar plugins de recurso, un problema que surge es cómo debe referirse a ellos desde la clase de bootstrap padre. Hay tres mecanismos diferentes que se pueden usar, dependiendo de cómo haya configurado el bootstrap y sus plugins de recurso.

Primero, si sus plugins están definidos dentro de una ruta de prefijo definida, puede referirse a ellos simplemente por su "nombre corto" -- es decir, la porción del nombre de clase que sigue al prefijo de clase. Por ejemplo, la clase "Zend_Application_Resource_View" puede referenciarse como simplemente "View", ya que la ruta de prefijo "Zend_Application_Resource" ya está registrada. Puede registrarlos usando el nombre de clase completo o el nombre corto:

$app = new Zend_Application(APPLICATION_ENV, array(
    'pluginPaths' => array(
        'My_Resource' => 'My/Resource/',
    ),
    'resources' => array(
        // if the following class exists:
        'My_Resource_View' => array(),

        // then this is equivalent:
        'View' => array(),
    ),
));

En cada caso, puede entonces inicializar el recurso y recuperarlo posteriormente usando el nombre corto:

$bootstrap->bootstrap('view');
$view = $bootstrap->getResource('view');

Segundo, si no hay definida ninguna ruta de plugin coincidente, aun así puede pasar un recurso por el nombre completo de la clase. En este caso, puede referenciarlo usando el nombre completo de clase del recurso:

$app = new Zend_Application(APPLICATION_ENV, array(
    'resources' => array(
        // This will load the standard 'View' resource:
        'View' => array(),

        // While this loads a resource with a specific class name:
        'My_Resource_View' => array(),
    ),
));

Obviamente, esto hace que referenciar el recurso sea mucho más detallado:

$bootstrap->bootstrap('My_Resource_View');
$view = $bootstrap->getResource('My_Resource_View');

Esto nos lleva a la tercera opción. Puede especificar un nombre explícito con el que se registrará una clase de recurso dada. Esto puede hacerse añadiendo una propiedad pública $_explicitType a la clase de plugin de recurso, con un valor de cadena; ese valor se usará entonces siempre que desee referenciar el plugin de recurso a través del bootstrap. Como ejemplo, definamos nuestra propia clase de vista:

class My_Resource_View extends Zend_Application_Resource_ResourceAbstract
{
    public $_explicitType = 'My_View';

    public function init()
    {
        // do some initialization...
    }
}

Entonces podemos inicializar ese recurso o recuperarlo por el nombre "My_View":

$bootstrap->bootstrap('My_View');
$view = $bootstrap->getResource('My_View');

Usando estos diferentes enfoques de nomenclatura, puede sobrescribir recursos existentes, añadir los suyos propios, combinar múltiples recursos para lograr una inicialización compleja, y más.