Hay dos caminos para empezar a usar
Zend_Application, y dependen de cómo inicie su
proyecto. En cada caso, siempre empieza creando una
clase Bootstrap, y un archivo de configuración relacionado.
Si planea usar Zend_Tool para crear su proyecto,
continúe leyendo a continuación. Si va a añadir
Zend_Application a un proyecto ya existente, querrá
saltar más adelante.
La forma más rápida de empezar a usar Zend_Application es usar
Zend_Tool para generar su proyecto. Esto también creará
su clase Bootstrap y su archivo.
Para crear un proyecto, ejecute el comando zf (en sistemas *nix):
% zf create project newproject
O el comando zf.bat de Windows:
C:> zf.bat create project newproject
Ambos crearán una estructura de proyecto similar a la 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 está en
newproject/application/Bootstrap.php, y se ve
así inicialmente:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
También notará que se crea un archivo de configuración,
newproject/application/configs/application.ini. Tiene 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
Todas las configuraciones de este archivo de configuración son para su uso con
Zend_Application y su bootstrap.
Otro archivo de interés es el archivo
newproject/public/index.php, que invoca
Zend_Application y lo despacha.
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH',
realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
Para continuar con el inicio rápido, por favor salte 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.inicon la configuración base necesaria paraZend_Application.Modificar su
public/index.phppara utilizarZend_Application.
Primero, cree su clase Bootstrap. Cree un archivo,
application/Bootstrap.php, con el siguiente contenido:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
Ahora, cree su configuración. Para este tutorial, usaremos una
configuración de estilo INI; puede, por supuesto, usar un archivo de configuración
XML, JSON, YAML, o
PHP también. Cree el archivo
application/configs/application.ini, y proporcione 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,
public/index.php. Si el archivo no existe, créelo;
de lo contrario, reemplácelo con el siguiente contenido:
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH',
realpath(dirname(__FILE__) . '/../application'));
// Define application environment
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 ZF installed
set_include_path(implode(PATH_SEPARATOR, array(
dirname(dirname(__FILE__)) . '/library',
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
Puede notar que el valor de la constante del entorno de la aplicación busca
una variable de entorno "APPLICATION_ENV". Recomendamos establecer
esto en el entorno de su servidor web. En Apache, puede establecerlo
ya sea 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]
![]() |
Aprenda sobre mod_rewrite |
|---|---|
Las reglas de reescritura anteriores permiten el acceso a cualquier archivo bajo la raíz de documentos de su host virtual. Si hay archivos que no desea exponer de esta manera, es posible que desee ser más restrictivo en sus reglas. Vaya al sitio web de Apache para aprender más sobre mod_rewrite. |
En este punto, ya está listo para empezar a aprovechar
Zend_Application.
Si siguió las instrucciones anteriores, su clase bootstrap utilizará un controlador frontal, y cuando se ejecute, despachará el controlador frontal. Sin embargo, es muy probable que necesite un poco más de configuración que esto.
En esta sección, veremos cómo añadir dos recursos a su aplicación. Primero, configuraremos sus layouts, y luego personalizaremos su objeto view.
Uno de los recursos estándar proporcionados con
Zend_Application es el recurso "layout". Este
recurso espera que defina valores de configuración que luego usará
para configurar su instancia de Zend_Layout.
Para usarlo, todo lo que necesitamos 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 aún no lo ha hecho, cree el directorio
application/layouts/scripts/, y el archivo
layout.phtml dentro de ese directorio. Un buen layout
inicial es el siguiente (y se conecta con el recurso view que se cubre
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, ya tendrá un layout funcional.
Ahora, añadiremos un recurso view personalizado. Al inicializar la vista,
querremos establecer el DocType HTML y un valor predeterminado para el título
a usar en el head HTML. Esto se puede lograr editando su
clase Bootstrap para añadir un método:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initView()
{
// Initialize view
$view = new Zend_View();
$view->doctype('XHTML1_STRICT');
$view->headTitle('My First Zend Framework Application');
// Add it to the ViewRenderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer'
);
$viewRenderer->setView($view);
// Return it, so that it can be stored by the bootstrap
return $view;
}
}
Este método se ejecutará automáticamente cuando haga bootstrap de la aplicación, y garantizará que su vista se inicialice de acuerdo con las necesidades de su aplicación.
Lo anterior debería servirle para empezar con Zend_Application
y la creación del bootstrap de su aplicación. A partir de aquí, debería empezar a
crear métodos de recursos, o, para máxima reutilización, clases plugin
de recursos. ¡Continúe leyendo para aprender más!
![[Note]](images/note.png)