Aquí encontrará documentación de tipo API sobre todos los componentes principales de
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 |
| 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 |
| 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. |
![]() |
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 |
|
Constructor. Los argumentos son como se describe, y se
usarán para establecer el estado inicial del objeto. Se registra una instancia de
|
getEnvironment() |
String | N/A |
Recupera la cadena de entorno pasada al constructor. |
getAutoloader() |
Zend_Loader_Autoloader |
N/A |
Recupera la instancia de |
setOptions(array $options) |
Zend_Application |
|
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
|
getOptions() |
Array | N/A |
Recupera todas las opciones usadas para inicializar el objeto;
podría usarse para almacenar en caché opciones de |
hasOption($key) |
Boolean |
|
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 |
|
Recupera el valor de la opción de una clave dada. Devuelve
|
setPhpSettings(array $settings, $prefix = '')
|
Zend_Application |
|
Establece configuraciones de |
setAutoloaderNamespaces(array $namespaces)
|
Zend_Application |
|
Registra espacios de nombres con la
instancia de |
setBootstrap($path, $class = null) |
Zend_Application |
|
|
getBootstrap() |
NULL |
Zend_Application_Bootstrap_Bootstrapper
|
N/A | Recupera la instancia de bootstrap registrada. |
bootstrap() |
Void | N/A |
Llama al método |
run() |
Void | N/A |
Llama al método |
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 |
|
Constructor. Acepta un único argumento, que debe ser un
objeto |
setOptions(array $options) |
Zend_Application_Bootstrap_Bootstrapper |
|
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 |
|
Si |
run() |
Void | N/A |
Define qué lógica de la aplicación ejecutar después del bootstrapping. |
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
|
|
Registra un recurso con la clase, proporcionando configuración opcional a pasar al recurso. |
unregisterPluginResource($resource) |
Zend_Application_Bootstrap_ResourceBootstrapper
|
|
Elimina un recurso de plugin de la clase. |
hasPluginResource($resource) |
Boolean |
|
Determina si se ha registrado un recurso específico en la clase. |
getPluginResource($resource) |
Zend_Application_Resource_Resource |
|
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
|
|
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. |
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 |
|
Constructor. Acepta un único argumento, que debe ser un
objeto |
setOptions(array $options) |
Zend_Application_Bootstrap_Bootstrapper |
|
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 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
|
hasOption($key) |
Boolean |
|
Determina si una clave de opción está presente. |
getOption($key) |
Mixed |
|
Recupera el valor asociado a una clave de opción; devuelve
|
setApplication(Zend_Application |
Zend_Application_Bootstrap_Bootstrapper $application)
|
Zend_Application_Bootstrap_BootstrapAbstract
|
|
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
|
|
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 |
|
Cuando un método o plugin de recurso devuelve un valor, se
almacenará en el contenedor de recursos (vea
|
getResource($name) |
Mixed |
|
Cuando un método o plugin de recurso devuelve un valor, se
almacenará en el contenedor de recursos (vea
|
bootstrap($resource = null) |
Mixed |
|
Si 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 |
|
Proporciona la comodidad de inicializar recursos
individuales permitiéndole llamar a
'bootstrap<ResourceName>()' en lugar de usar el
método |
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.
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';
}
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 |
|
El constructor debe permitir pasar opciones con las que inicializar el estado. |
setBootstrap(Zend_Application_Bootstrap_Bootstrapper
$bootstrap)
|
Zend_Application_Resource_Resource |
|
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 |
|
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. |
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 |
|
El constructor debe permitir pasar opciones con las que inicializar el estado. |
setBootstrap(Zend_Application_Bootstrap_Bootstrapper
$bootstrap)
|
Zend_Application_Resource_ResourceAbstract |
|
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 |
|
Establece el estado del recurso. |
getOptions() |
Array | N/A | Recupera las opciones registradas. |
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.
![[Note]](images/note.png)