Aquí encontrará documentación del tipo API sobre todos los recursos de
plugins disponibles por defecto en Zend_Application
.
Zend_Application_Resource_Cachemanager
puede ser
utilizado para configurar un grupo de opciones de Zend_Cache
para ser usado para cargar caches bajo demanda usando
Zend_Cache_Manager
Como el Cache Manager usa un mecanismo de carga bajo demanda, las opciones son traducidas a plantillas de opciones usadas para instanciar un objeto de cache a pedido.
Ejemplo 31. Ejemplo de configuración del recurso Cachemanager
Aquí abajo se muestra un archivo INI de ejemplo
que muestra como se puede configurar el Zend_Cache_Manager
.
El formato consta de un prefijo de recurso Cachemanager (
resources.cachemanager) seguido por el nombre de la plantilla
de cache (por ejemplo resources.cachemanager.database)
y finalmente seguido de una opción típica de Zend_Cache
.
resources.cachemanager.database.frontend.name = Core resources.cachemanager.database.frontend.customFrontendNaming = false resources.cachemanager.database.frontend.options.lifetime = 7200 resources.cachemanager.database.frontend.options.automatic_serialization = true resources.cachemanager.database.backend.name = File resources.cachemanager.database.backend.customBackendNaming = false resources.cachemanager.database.backend.options.cache_dir = "/path/to/cache" resources.cachemanager.database.frontendBackendAutoload = false
En realidad, buscar éste cache desde el Cache Manager es tan simple como
acceder a una instancia del Manager (Zend_Cache_Manager
)
tomada desde Zend_Application_Resource_Cachemanager
y llamar $cacheManager->getCache('database');
.
El siguiente ejemplo fue tomado de un controlador donde la clase bootstrap puede
ser accedida como un parametro de Front Controller (que es automáticamente asignado
durante el proceso de bootstrap). Como se puede ver, el recurso Cache Manager
implementa el método getCacheManager()
para obtener una
instancia de Zend_Cache_Manager
.
$manager = $this->getFrontController() ->getParam('bootstrap') ->getResource('cachemanager') ->getCacheManager(); $dbCache = $manager->getCache('database');
Ver el método Zend_Cache::factory()
para una descripción
de los valores por defecto que se pueden asignar al momento de configurar un cache
como el del ejemplo usando un archivo de configuración INI.
Zend_Application_Resource_Db
inicializará un adaptador
Zend_Db
basado en las opciones que se le pasen. Por defecto,
también establece el adaptador por
defecto para usarlo con
Zend_Db_Table
.
Zend_Db_Table
. If you want to use mutliple databases
simultaneously, you can use the Multidb Resource
Plugin.
Se reconocen las siguientes configuraciones claves:
-
adapter : tipo de adaptador
Zend_Db
. -
params : array asociativo de parámetros de configuración para utilizar al recuperar la instancia del adaptador.
-
isDefaultTableAdapter : Indica si establecer o no este adaptador como el adaptador de tablas por defecto.
-
defaultMetadataCache: the name of the cache template or an instance of
Zend_Cache_Core
to use as metadata cache forZend_Db_Table
.
Ejemplo 32. Muestra de la Configuracion de Recursos del Adaptador DB (Base de Datos)
A continuación, un ejemplo de configuración INI que puede ser utilizada para iniciar el recurso DB.
[production] resources.db.adapter = "pdo_mysql" resources.db.params.host = "localhost" resources.db.params.username = "webuser" resources.db.params.password = "XXXXXXX" resources.db.params.dbname = "test" resources.db.isDefaultTableAdapter = true ; Optionally you can also the cache template to use for metadata caching: resources.db.defaultMetadataCache = "database"
Recuperando la Instancia del Adaptador
Si decide no hacer la instanciación del adaptador con este recurso por defecto del adaptador de tabla, ¿cómo puede recuperar la instancia del adaptador?
Como con cualquier recurso de plugin, se puede recuperar el recurso de plugin de DB desde su archivo de arranque:
$resource = $bootstrap->getPluginResource('db');
Una vez que tiene el recurso objeto, puede recuperar el adaptador de DB usando el
método
getDbAdapter()
:
$db = $resource->getDbAdapter();
Zend_Application_Resource_Dojo
puede ser usado
para configurar los Zend_Dojo
viewhelpers.
Ejemplo 33. Configuración de ejemplo del recurso Dojo
Aquí se muestra un archivo INI de ejemplo
que indica como habilitar Zend_Dojo
.
resources.dojo.enable = true ; Siempre cargar archivos javascript de Dojo
El recurso complemento Zend_Dojo
utiliza las opciones de
Zend_Dojo_View_Helper_Dojo_Container::setOptions()
para
configurar sus viewhelpers. Por favor diríjase al capítulo acerca de
Zend_Dojo para una lista completa de opciones
disponibles para la configuración y sus descripciones.
Probablemente el recurso más común que se carga con
Zend_Application
será el recurso Front Controller
, que proporciona la habilidad para configurar
Zend_Controller_Front
. Este recurso ofrece
la posibilidad de establecer parámetros arbitrarios del Front
Controller,
especificar plugins para inicializar, y mucho más.
Una vez inicializado, el recurso asigna la propiedad del
$frontController
del bootstrap a la instancia
Zend_Controller_Front
.
Las claves de configuración disponibles incluyen las siguientes, sin importar si son mayúsculas ó minúsculas:
-
controllerDirectory :: ya sea un valor de string especificando un único directorio controlador, o un array de pares de directorio módulo/controlador.
-
moduleControllerDirectoryName : un valor de string indicando el subdirectorio bajo el cual un módulo contiene controladores.
-
moduleDirectory : directorio bajo el cual pueden encontrarse los módulos.
-
defaultControllerName : Nombre base del controlador por defecto (normalmente, "índex").
-
defaultAction : nombre base de la acción por defecto (normalmente, "índex").
-
defaultModule : nombre base del módulo por defecto (normalmente, "default").
-
baseUrl : base explícita a la URL de la aplicación (normalmente auto-detect).
-
plugins : array con los nombres de los plugins de las clases de los Front Controllers. El recurso instanciará a cada clase (sin argumentos al constructor) y luego registra la instancia con el Front Controller. If you want to register a plugin with a particular stack index, you need to provide an array with two keys class and stackIndex.
-
params : array de pares clave/valor para registrarse con el front controller.
-
returnresponse: whether or not to return the response object after dispatching the front controller. Value should be a boolean; by default, this is disabled.
Si se ingresa una clave no reconocida, ésta será registrada como un
parámetro de Front
Controller pasándolo a
setParam()
.
Ejemplo 34. Ejemplo Front Controller resource configuration
A continuación, INI es un snippet para mostrar cómo configurar el recurso Front Controller.
[production] resources.frontController.controllerDirectory = APPLICATION_PATH . "/controllers" resources.frontController.moduleControllerDirectoryName = "actions" resources.frontController.moduleController = APPLICATION_PATH . "/modules" resources.frontController.defaultControllerName = "site" resources.frontController.defaultAction = "home" resources.frontController.defaultModule = "static" resources.frontController.baseUrl = "/subdir" resources.frontController.plugins.foo = "My_Plugin_Foo" resources.frontController.plugins.bar = "My_Plugin_Bar" resources.frontController.plugins.baz.class = "My_Plugin_Baz" resources.frontController.plugins.baz.stackIndex = 123 resources.frontController.returnresponse = 1 resources.frontController.env = APPLICATION_ENV ; The following proxies to: ; Zend_Controller_Action_HelperBroker::addPath('Helper_Path', $helperPrefix); resources.frontController.actionHelperPaths.HELPER_Prefix = "My/Helper/Path"
Ejemplo 35. Recuperar el Front Controller de su arranque (bootstrap)
Una vez que el recurso de su Front Controller ha sido inicializado,
se puede recuperar la
instancia de Front Controller a través de la
propiedad
$frontController
de su bootstrap.
$bootstrap->bootstrap('frontController'); $front = $bootstrap->frontController;
Zend_Application_Resource_Layout
can be used to
configure Zend_Layout
. Configuration options are
per the Zend_Layout
options.
Ejemplo 36. Sample Layout configuration
Below is a sample INI snippet showing how to configure the navigation resource.
resources.layout.layout = "NameOfDefaultLayout" resources.layout.layoutPath = "/path/to/layouts"
Zend_Application_Resource_Locale
puede ser usado para configurar
una localidad en el ámbito de una aplicación entera. Ésta localidad es usada en todas las
clases y componentes que trabajen con localización o internacionalización. Por defecfto
la localidad es guardada en una entrada en
Zend_Registry
baje la
clave '
Zend_Locale'.
Hay básicamente tres casos de uso para el Locale Resource Plugin. Cada uno deberá ser usado dependiendo de la necesidad de la apliación.
Sin especificar ninguna opción para
Zend_Application_Resource_Locale
,
Zend_Locale
detectará la localidad y la aplicación la usará
automaticamente.
Ésta detección funciona porque el cliente envía el idioma deseado en su pedido
HTTP. Normalmente el navegador envía los idiomas que desea ver
y
Zend_Locale
usa esta información para la detección.
Pero hay dos problemas con este enfoque:
-
El navegador podría estar configurado para no enviar el idioma
-
El usuario podría haber configurado manualmente una localidad que no exista
En ambos casos
Zend_Locale
se apoyará en otros mecanismos
para realizar la detección de la localidad:
-
Cuando se configuró una localidad que no existe,
Zend_Locale
trata de degradar la cadena.Cuando, por ejemplo se configura en_ZZ, automáticamente será degradado a en. En este caso en será usado como la localidad de la aplicación.
-
Cuando la localidad tampoco haya podido ser detectada incluso degradando la cadena, la localidad de su entorno (servidor web) será usada. La mayoría de los entornos disponibles en la web usan en como localidad.
-
Cuando la localidad del sistema no se haya podido detectar,
Zend_Locale
usara su localidad por defecto, que está configurada como en.
Para más información acerda de la detección de localidad, vea este capitulo acerca de detección automática de Zend_Locale
La detección descrita más arriba podría llegar a provocar problemas cuando la localidad
no haya podido ser detectada y se desea tener otra localidad como defecto que no sea
en. Para prevenir esto,
Zend_Application_Resource_Locale
permite configurar su propia
localidad, que será usada en el cado de que una localidad no se haya podido detectar.
Ejemplo 37. Autodetectar la loclidad configurando un mecanismo de reserva
El siguiente ejemplo muestra como configurar su propia localidad que será usada cuando el cliente no especifique ninguna localidad.
; Try to determine automatically first, ; if unsuccessful, use nl_NL as fallback. resources.locale.default = "nl_NL"
Muchas veces es útil definir una única localidad para ser usada. Esto se puede conseguir usando la opción force.
En este caso, ésta única localidad será usada y detección automática será desactivada.
Ejemplo 38. Definiendo una única localidad a ser usada
El siguiente ejemplo muestra como usar una única localidad para la aplicación entera.
; No matter what, the nl_NL locale will be used. resources.locale.default = "nl_NL" resources.locale.force = true
When you have set no cache,
Zend_Locale
will set itself a cache
with the file backend by default. But if you want to choose the backend or others
options, you can use the name of a cache template or an instance of
Zend_Cache_Core
.
For more informations look into
“Speed up Zend_Locale and its subclasses”.
Ejemplo 39. Defining a cache template to use
; Optionally you can also the cache template to use for caching: resources.locale.cache = "locale"
Use Zend_Application_Resource_Log
para instanciar un
Zend_Log
con una cantidad de escritores arbitraria.
La configuración será pasada al método Zend_Log::factory()
para permitir especificar una combinacion de filtros y escritores de logs. La instancia
de log podra ser tomada del bootstrap luego para guardar eventos de log.
Ejemplo 40. Ejemplo de configuración del recurso de Log
Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar el recurso de log.
resources.log.stream.writerName = "Stream" resources.log.stream.writerParams.stream = APPLICATION_PATH"/../data/logs/application.log" resources.log.stream.writerParams.mode = "a" resources.log.stream.filterName = "Priority" resources.log.stream.filterParams.priority = 4
Para más información de las opciones disponibles, por favor lea la documentacion de Zend_Log::factory().
Zend_Application_Resource_Mail
puede ser usado para instanciar un
transporte para Zend_Mail
o configurar el nombre y dirección
por defecto, asimismo como el nombre y dirección para el encabezado "replyto".
Al instanciar un transporte, éste es registrado automáticamente con
Zend_Mail
aunque si se quisiera evitar este comportamiento se puede
configurar la directiva transport.register con el valor
FALSE
.
Ejemplo 41. Ejemplo de configuración del recurso Mail
Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar el recurso de Mail.
resources.mail.transport.type = smtp resources.mail.transport.host = "smtp.example.com" resources.mail.transport.auth = login resources.mail.transport.username = myUsuario resources.mail.transport.password = myClave resources.mail.transport.register = true ; True por defecto resources.mail.defaultFrom.email = john@example.com resources.mail.defaultFrom.name = "John Doe" resources.mail.defaultReplyTo.email = Jane@example.com resources.mail.defaultReplyTo.name = "Jane Doe"
Zend_Application_Resource_Modules
se utiliza para
inicializar sus módulos de aplicación. Si su módulo tiene un archivo
Bootstrap.php
en su raíz, y contiene una clase
llamada Module_Bootstrap
(donde "Module" es el
nombre del módulo), entonces usará esa clase para arrancar el módulo.
Por defecto, se creará una instancia de
Zend_Application_Module_Autoloader
para el
módulo, utilizando el nombre del módulo y del directorio para
inicializarlo.
Ya que los módulos no reciben ningún parámetro por defecto, para poder activarlos via configuración, será necesario crearlo como un array vacío. Seguiendo el estilo de configuración INI será similar a:
resources.modules[] =
Siguiendo el estilo de configuración XML será similar a:
<resources> <modules> <!-- Placeholder to ensure an array is created --> <placeholder /> </modules> </resources>
Utilizando un array PHP estandar, simplemente creelo como un array vacío:
$options = array( 'resources' => array( 'modules' => array(), ), );
Dependencia de Recursos del Front Controller
El recurso Modules tiene una dependencia de Front Controller resource . Usted puede, por supuesto, proporcionar su propia sustitución de ese recurso mediante un recurso personalizado de la clase Front Controller o un método inicializador de la clase -- tan largo como se quiera siempre que el plugin del recurso de la clase termine en "Frontcontroller" o el método inicializador se llame "_initFrontController" (case insensible).
Ejemplo 42. Configurando Módulos
Usted puede especificar una configuración específica de un módulo utilizando el nombre del módulo como un prefijo/sub-sección en su archivo de configuración.
Por ejemplo, supongamos que su aplicación tiene un módulo "noticias". Los siguientes son ejemplos de INI y XML que muestran la configuración de recursos en ese módulo.
[production] news.resources.db.adapter = "pdo_mysql" news.resources.db.params.host = "localhost" news.resources.db.params.username = "webuser" news.resources.db.params.password = "XXXXXXX" news.resources.db.params.dbname = "news" news.resources.layout.layout = "news"
<?xml version="1.0"?> <config> <production> <news> <resources> <db> <adapter>pdo_mysql</adapter> <params> <host>localhost</host> <username>webuser</username> <password>XXXXXXX</password> <dbname>news</dbname> </params> <isDefaultAdapter>true</isDefaultAdapter> </db> </resources> </news> </production> </config>
Ejemplo 43. Recuperando el bootstrap de un módulo específico
En ocasiones, puede que necesite para recuperar el objeto
bootstrap de un módulo específico -- tal vez para ejecutar discretos
métodos bootstrap ,o a recoger el cargador automático con el fin de
configurarlo. Esto puede hacerse utilizando el método
getExecutedBootstraps()
de los recursos
de Módulo.
$resource = $bootstrap->getPluginResource('modules'); $moduleBootstraps = $resource->getExecutedBootstraps(); $newsBootstrap = $moduleBootstraps['news'];
Zend_Application_Resource_Multidb
puede ser utulizado para
instanciar múltiples conexiones a distintas bases de datos. Se pueden usar las mismas
opciones que con el
recurso complemento Db.
Sin embargo, para especificar una conexión por defecto, se puede usar la directiva
'default'.
Ejemplo 44. Configurando múltiples conexiones
Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar dos conexiones.
[production] resources.multidb.db1.adapter = "pdo_mysql" resources.multidb.db1.host = "localhost" resources.multidb.db1.username = "webuser" resources.multidb.db1.password = "miClaveDificil" resources.multidb.db1.dbname = "db1" resources.multidb.db2.adapter = "pdo_pgsql" resources.multidb.db2.host = "example.com" resources.multidb.db2.username = "dba" resources.multidb.db2.password = "otraClaveDificil" resources.multidb.db2.dbname = "db2" resources.multidb.db2.default = true
Ejemplo 45. Obteniendo un adaptador de base de datos en particular
Al usar este recurso complemento, por lo general se desea obtener el adaptador
de una base de datos en particular. Esto puede ser realizado usando el método
getDb()
provisto por el recurso. El método
getDb()
devuelve una instancia de una clase que extiende
Zend_Db_Adapter_Abstract
. Si no ha especificado una base
de datos por defecto, saltará una excepción si este método es llamado sin pasarle
un parámetro
$resource = $bootstrap->getPluginResource('multidb'); $db1 = $resource->getDb('db1'); $db2 = $resource->getDb('db2'); $defaultDb = $resource->getDb();
Ejemplo 46. Obteniendo el adaptador de base de datos por defecto
Adicionalmente, se puede obtener el adaptador por defecto usando el método
getDefaultDb()
. Si no ha especificado un adaptador por
defecto, el primer adaptador configurado será devuelto. A menos que especifique
FALSE
como primer parámetro, NULL
será
devuelto cuando no se haya configurado ningún adaptador por defecto.
Abajo se muestra un ejemplo que asume que el recurso complemento MultiDb se ha configurado con el ejemplo INI mostrado anteriormente.
$resource = $bootstrap->getPluginResource('multidb'); $db2 = $resource->getDefaultDb(); // Misma configuración, pero ahora con la db por defecto: $db1 = $resource->getDefaultDb(); $null = $resource->getDefaultDb(false); // null
Zend_Application_Resource_Navigation
puede ser usado para configurar
una instancia de Zend_Navigation
. Las
opciones de configuración son las mismas que para
Zend_Navigation
.
Al terminar de configurar la instancia de navegación, la asigna a
Zend_View_Helper_Navigation
por defecto, de donde se puede
obtener posteriormente.
Ejemplo 47. Ejemplo de configuración del recurso Navigation
Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar una navegación.
resources.navigation.pages.page1.label = "Etiqueta para la primera página" resources.navigation.pages.page1.route = "Route perteneciente a la primera página" ; La página 2 es una subpágina de la página 1 resources.navigation.pages.page1.pages.page2.type = "Zend_Navigation_Page_Uri" resources.navigation.pages.page1.pages.page2.label = "Etiqueta para la segunda página" resources.navigation.pages.page1.pages.page2.uri = "/url/to/page/2"
Zend_Application_Resource_Router
puede ser usado para configurar
el router mientras es registrado con el Front Controller.
La configuración es la misma que para
Zend_Controller_Router_Route
.
Ejemplo 48. Configuración de ejemplo del recurso Router
Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar el recurso de Router.
resources.router.routes.route_id.route = "/login" resources.router.routes.route_id.defaults.module = "user" resources.router.routes.route_id.defaults.controller = "login" resources.router.routes.route_id.defaults.action = "index" ; Opcionalmente se puede configurar un separador de nombre encadenado: resources.router.chainNameSeparator = "_"
Para más información, vea la sección del separador de nombre encadenado.
Zend_Application_Resource_Session
le permite
configurar
Zend_Session
y opcionalmente
inicializar una sesión SaveHandler.
Para establecer un manejador de sesiones, simplemente pasar al recurso la clave opcional saveHandler (case insensible). El valor de esta opción puede ser uno de los siguientes:
-
String : un string indicando una clase implementando
Zend_Session_SaveHandler_Interface
que debería ser instanciada. -
Array : un array con las claves "class" y, opcionalmente, "options", indicando la clase que implementa
Zend_Session_SaveHandler_Interface
que debería ser instanciada y una variedad de opciones para proporcionar a su constructor. -
Zend_Session_SaveHandler_Interface
: un objeto implementando esta interfaz.
Pasando cualquier otra opción de claves será pasado a
Zend_Session::setOptions()
para configurar
Zend_Session
.
Ejemplo 49. Configuración de recursos de la Sesión Ejemplo
A continuación el snippet
INI
nos muestra cómo configurar el recurso
para sesiones. Se establecen varias opciones
Zend_Session
, como también configura una
instancia
Zend_Session_SaveHandler_DbTable
.
resources.session.save_path = APPLICATION_PATH "/../data/session" resources.session.use_only_cookies = true resources.session.remember_me_seconds = 864000 resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable" resources.session.saveHandler.options.name = "session" resources.session.saveHandler.options.primary.session_id = "session_id" resources.session.saveHandler.options.primary.save_path = "save_path" resources.session.saveHandler.options.primary.name = "name" resources.session.saveHandler.options.primaryAssignment.sessionId = "sessionId" resources.session.saveHandler.options.primaryAssignment.sessionSavePath = "sessionSavePath" resources.session.saveHandler.options.primaryAssignment.sessionName = "sessionName" resources.session.saveHandler.options.modifiedColumn = "modified" resources.session.saveHandler.options.dataColumn = "session_data" resources.session.saveHandler.options.lifetimeColumn = "lifetime"
Configurando tu primera base de datos!
Si vas a configurar el manejador
Zend_Session_SaveHandler_DbTable
para guardar sesiones
, primero deberas configurar tu conexión a la base de datos.
Lo
puedes hacer mediante
Db
-- y asegurate de que la llave "
resources.db
" esta antes que el
"
resources.session
" -- o escribiedo tu propia clase para inicializar la base
de datos y establecer los
valores predeterminados para el adaptador
Zend_Db_Table
.
Zend_Application_Resource_Translate
inicializara un adaptador
Zend_Translate
basado en las opciones con las que se lo configure.
Las siguientes claves de configuración son válidas:
-
adapter : El tipo de adaptador
Zend_Translate
. El adaptador por defecto es array si es que no se especifica ninguno. -
data : ruta a la traducción.
-
locale : la localidad a ser usada para la traducción. Por defecto la localidad es detectada automáticamente. Para forzar una localidad arbitraria hay que guardar una instancia de
Zend_Locale
en elZend_Registry
. -
options : las opciones son distintas para cada adaptador. Ver la sección “Options for adapters” para mas detalles.
-
registry : la clave customizada para guardar la instancia de
Zend_Translate
en el registry. Por defecto, la clave se llamará Zend_Translate. -
cache : el nombre de la plantilla de cache o una instancia de
Zend_Cache_Core
para queZend_Translate_Adapter
use como cache. Su gol es acelerar la carga, sobre todo en el caso de los archivos XML.
Ejemplo 50. Ejemplo de configuración del recurso de traducción
Abajo se muestra un extracto de archivo INI de ejemplo donde se muestra como configurar el recurso de traducción.
resources.translate.adapter = tmx resources.translate.content = APPLICATION_PATH "/../data/locales" resources.translate.scan = Zend_Translate::LOCALE_DIRECTORY ; Opcionalmente se puede especificar una plantilla de cache: resources.translate.cache = "languages"
Zend_Application_Resource_View
puede ser
utilizada para configurar una instancia
Zend_View
.
Las opciones de configuración son por
las opciones de
Zend_View
.
Una vez hecha la configuración de la instancia de vista, crea una
instancia de
Zend_Controller_Action_Helper_ViewRenderer
y
registra el ViewRenderer con
Zend_Controller_Action_HelperBroker
-- desde la
cual usted puede recuperarla posteriormente.
Ejemplo 51. Ejemplo de configuración del recurso Vista
A continuación un snippet INI mostrando cómo configurar el recurso vista (view).
resources.view.encoding = "UTF-8" resources.view.basePath = APPLICATION_PATH "/views/scripts"