Inicio rápido con Zend_Application

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í .

Usando Zend_Tool

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 .

Añadir Zend_Application a su aplicación

Los fundamentos de Zend_Application son bastante simples:

  • Crear un archivo application/Bootstrap.php , con la clase Bootstrap .

  • Crear un archivo de configuración application/configs/application.ini con la configuración básica necesaria para Zend_Application .

  • Modificar su public/index.php para usar Zend_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 .

Agregando y Creando Recursos

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.

Próximos pasos con Zend_Application

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!