Hay dos caminos para empezar con
Zend_Application
, y dependen de cómo inicia su
proyecto. En cada caso, siempre se comienza con la creación de
la
clase
Bootstrap
, y un archivo de configuración asociado.
Si se planea utilizar
Zend_Tool
para crear su
proyecto, continúe leyendo. Si va añadir
Zend_Application
a un proyecto existente,
debe
ir aquí
.
La forma más rápida para comenzar a utilizar
Zend_Application
es usar
Zend_Tool
para generar su proyecto.
Esto también creará su clase y archivo
Bootstrap
.
Para crear un proyecto, ejecute el comando zf (en sistemas *nix):
% zf create project newproject
O el comando
zf.bat
en Windows:
C:> zf.bat create project newproject
Ambos crearán una estructura del proyecto que se parece a lo siguiente:
newproject |-- application | |-- Bootstrap.php | |-- configs | | `-- application.ini | |-- controllers | | |-- ErrorController.php | | `-- IndexController.php | |-- models | `-- views | |-- helpers | `-- scripts | |-- error | | `-- error.phtml | `-- index | `-- index.phtml |-- library |-- public | `-- index.php `-- tests |-- application | `-- bootstrap.php |-- library | `-- bootstrap.php `-- phpunit.xml
En el diagrama anterior, su bootstrap se encuentra en
newproject/application/Bootstrap.php
, y al principio
se vería así:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {}
También notará que se ha creado un archivo de configuración,
newproject/application/configs/application.ini
.
Con el siguiente contenido:
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
Todos las opciones en este archivo de configuración son para
su uso con
Zend_Application
y su bootstrap.
Otro archivo de interés es
newproject/public/index.php
,
el cual invoca a
Zend_Application
y lo envía.
<?php // Define el path al directorio de la aplicación defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define el entorno de la aplicación defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); /** Zend_Application */ require_once 'Zend/Application.php'; // Crea la application, el bootstrap, y lo ejecuta $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
Para continuar con el inicio rápido, por favor vaya a la sección de Recursos .
Los fundamentos de
Zend_Application
son bastante simples:
-
Crear un archivo
application/Bootstrap.php
, con la claseBootstrap
. -
Crear un archivo de configuración
application/configs/application.ini
con la configuración básica necesaria paraZend_Application
. -
Modificar su
public/index.php
para usarZend_Application
.
Primero, genere su clase
Bootstrap
. Crear un archivo,
application/Bootstrap.php
, con el siguiente contenido:
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { }
Ahora, debe crear su configuración. Para este tutorial, usaremos
una configuración de
estilo
INI
; puede, por supuesto,
usar un archivo de configuración
XML
o
PHP
. Cree el archivo
application/configs/application.ini
, proporcionando
el siguiente contenido.
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
Ahora, modifiquemos su script de entrada (gateway),
public/index.php
. Si el archivo no existe, cree uno;
de lo contrario, sustitúyalo por el siguiente
contenido:
<?php // Define la ruta al directorio de la aplicación defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define el entorno de la aplicación defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // Typically, you will also want to add your library/ directory // to the include_path, particularly if it contains your Zend Framework installed set_include_path(implode(PATH_SEPARATOR, array( dirname(dirname(__FILE__)) . '/library', get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; // Crea la aplicación, el bootstrap, y lo ejecuta $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
Se puede observar que el valor constante del entorno de la aplicación
busca una variable
de entorno "APPLICATION_ENV".
Recomendamos este ajuste en el entorno de su servidor web.
En Apache, puede también configurarlo en la definición de su vhost,
o en su archivo
.htaccess
. Recomendamos el siguiente
contenido para su archivo
public/.htaccess
:
SetEnv APPLICATION_ENV development RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Más información sobre mod_rewrite
Las reglas de reescritura le permitin reescribir el acceso a cualquier archivo en la raíz de los documentos web de su host virtual. Si hay archivos que no desea que esten expuestos y desea ocualtarlos, puedes ser mas restrictivo en tus reglas Ir a la página web de Apache para obtener más información acerca de about mod_rewrite .
En este punto, está listo para comenzar a usar las ventajas de
Zend_Application
.
Si ha seguido las instrucciones anteriores, entonces su clase de arranque estará utilizando un controlador frontal (front controller), y cuando se ejecute, enviará el controlador frontal (front controller). Sin embargo, con toda probabilidad, necesitará un poco más de configuración que ésta.
En esta sección, veremos como añadir dos recursos a su aplicación. En primer lugar, estableceremos los layouts, y luego vamos a personalizar sus objetos de la vista.
Uno de los recursos estándar provistos con
Zend_Application
es el recurso "layout".
Este recurso espera que definas valores de configuración, los
que
entonces utilizará para configurar su instancia
Zend_Layout
.
Para usarlo, todo lo que tenemos que hacer es actualizar el archivo de configuración.
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" ; ADD THE FOLLOWING LINES resources.layout.layout = "layout" resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
Si hasta ahora no lo ha hecho, genere el directorio
application/layouts/scripts/
, y el archivo
layout.phtml
dentro de ese directorio. Un buen layout
inicial es como sigue
(y vincularlo con los
recursos de la vista que cubriremos a continuación):
<?php echo $this->doctype() ?> <html> <head> <?php echo $this->headTitle() ?> <?php echo $this->headLink() ?> <?php echo $this->headStyle() ?> <?php echo $this->headScript() ?> </head> <body> <?php echo $this->layout()->content ?> </body> </html>
En este punto, usted tendrá un layout ya trabajando.
Ahora, vamos añadir una vista de recurso personalizada.
Cuando se inicializa la vista,
queremos establecer el DocType
HTML
y un valor predeterminado del título para utilizarlo en la cabecera
de
HTML
. Esto puede llevarse a cabo editando su clase
Bootstrap
para agregar un método.
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initView() { // Inicializar la vista $view = new Zend_View(); $view->doctype('XHTML1_STRICT'); $view->headTitle('My First Zend Framework Application'); // Añadir al ViewRenderer $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper( 'ViewRenderer' ); $viewRenderer->setView($view); // Retorno, de modo que pueda ser almacenada en el arranque (bootstrap) return $view; } }
Este método se ejecuta automáticamente cuando arranca la aplicación, y se asegurará que su vista sea inicializada según las necesidades de su aplicación.
Con lo anterior debería poder comenzar con
Zend_Application
y con la creación del bootstrap de su aplicación. De aquí, usted debe comenzar a
crear
sus métodos de recursos, o para la máxima re-usabilidad,
clases de recursos de plugin. Y
seguir leyendo para aprender más!