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.inicon la configuración básica necesaria paraZend_Application. -
Modificar su
public/index.phppara 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!