Está en la página 1de 27

Curso: "PHP 5 POO con Zend Framework" 2011

Instalacin de Zend Framework Mdulo 1 / parte 2

Todos los logos y marcas utilizados en este documento, estn registrados y pertenecen a sus respectivos dueos.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

Curso: "PHP 5 POO con Zend Framework" 2011


Objetivos
Este captulo busca iniciarnos en todo el procedimiento de crear un proyecto Zend incluyendo la propia instalacin del framework y todos los detalles que hay que tener en cuenta.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

Curso: "PHP 5 POO con Zend Framework" 2011


Requerimientos Mnimos
ZF al estar escrito en PHP5, un lenguaje multiplataforma, puede ejecutarse en la mayora de los S.O tales como Linux, Mac OS X, Microsoft Windows, Solaris, etc.

Para nosotros (aunque pueden existir otras alternativas viables) el "entorno ideal" sera poder contar con un servidor GNU/Linux con un servidor web como Apache, el mdulo mod_rewrite habilitado,
El "entorno ideal" puede cambiar y/o sustituir algunos componentes con otras alternativas (por ej. en el caso de no contar con mod_rewrite), pero lo "ideal" sera que nuestro servidor o servicio de hosting contara con estos servicios y trabajramos con todas las herramientas requeridas y con las cuales se seleccionaron para usar con el framework.

PHP5 en su versin 5.1.4 o superior y asegurarnos que est instalado PDO para poder realizar operaciones sobre las bases de datos (Zend requiere que se active esta API).
PDO es una extensin que provee una capa de abstraccin de acceso a datos para PHP 5, con lo cual se consigue hacer uso de las mismas funciones para hacer consultas y obtener datos entre distintos manejadores de bases de datos (una capa ms de abstraccin).

El Mod Rewrite es un mdulo para el servidor Apache que nos permite reescribir las apariencias de las URLs. A travs de diferentes reglas y condiciones se pueden personalizar esas URLs o Permalinks de nuestras pginas de forma que podamos conseguir enlaces ms amigables para los buscadores y para nuestros visitantes. Por ej., en vez de /index.php?mod=estadisticas&usuario=1 podramos tener /estadisticas/usuario/1

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

Curso: "PHP 5 POO con Zend Framework" 2011


Si trabajamos en GNU/Linux, casi cualquier distribucin moderna incluye PHP5, MySQL5 y Apache2 (este combo es comnmente llamado LAMP por las siglas de sus componentes).

. Sin embargo, si ests ms acostumbrado a la plataforma Windows existe tambin un combo que se llama WAMP. Una de las herramientas que rene

todos los elementos anteriores necesarios de manera muy sencilla se llama Xampp. Para instalarlo solo tienen que seguir los pasos indicados segn el paquete correspondiente a nuestro sistema operativo. Si nuestro GNU/Linux no tuviera PHP5, existen un paquete en Xampp que soluciona este problema.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

Curso: "PHP 5 POO con Zend Framework" 2011


Primera configuracin
Una vez instalado nuestro entorno de trabajo con todos sus elementos, puede que

necesitemos hacer un par de ajustes antes de usar ZF.

Una forma de verificar nuestro entorno es ejecutar un index.php con un simple "phpinfo();"

Si nuestro entorno es Windows


Al instalar Xampp no necesitamos configurar nada ms ya que viene listo para usar ZF, as que las configuraciones de ms abajo no deberan requerirse, pero por las dudas podemos revisarlas y ya conocer cmo y donde es que se configuran.

Configuracin Base
Editamos el archivo httpd.conf de configuracin de Apache ubicado generalmente en C:\xampp\apache\conf Cdigo:
#LoadModule rewrite_module modules/mod_rewrite.so

Le quitamos el comentario # dejndolo as Cdigo:


LoadModule rewrite_module modules/mod_rewrite.so

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

Curso: "PHP 5 POO con Zend Framework" 2011


Luego editamos el archivo php.ini en c:\xampp\php Cdigo:
;extension=php_pdo.dll ;extension=php_pdo_mysql.dll

Quitamos el punto y coma dejndolo as Cdigo:


extension=php_pdo.dll extension=php_pdo_mysql.dll

Luego debemos reiniciar Apache para que apliquen los cambios en los archivos de configuracin.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

Curso: "PHP 5 POO con Zend Framework" 2011


Probando nuestro servidor web
Vamos a asegurarnos que todo est corriendo hasta ahora como corresponde. Entonces creamos un archivo index.php y aadir el siguiente contenido:
<?php echo "Hola, Mundo sin Zend Framework!";

Ahora abrimos nuestro navegador favorito (solo Firefox ;-)) y escribimos la direccin URL http://localhost/ para ver una simple pgina con nuestro texto de burla al mundo de programadores que an no usa Zend Framework.

Ey! Se olvidaron de colocar el ?>!

(jejeje, tontos, los atrapamos!)

No nos olvidamos de la etiqueta de cierre ?> de PHP! Se debe omitir intencionalmente cuando se trata de archivos PHP que contengan slo cdigo PHP como por ejemplo las clases. Estamos omitiendo intencionalmente para evitar la salida involuntaria caracteres o espacios en blanco que se puedan producirse. De hecho, esta es una de las "mejores prcticas" recomendadas por el estndar de Zend Framework.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

Curso: "PHP 5 POO con Zend Framework" 2011


Antes de empezar, cmo funciona rpidamente un MVC
El patrn MVC podra considerarse una "especializacin" de una tpica "arquitectura de 3 capas" pero con una lgica de funcionamiento ms ajustada a entornos web, donde se intenta -por lo general concentrar todas las peticiones del exterior a travs de un solo punto de entrada (clsicos sistemas "modulares") En este nuevo diseo tendremos que todas las peticiones del usuario se dirigirn hacia un Controller ("Controlador") que se encargar de decidir si solicita informacin de la "lgica de negocio" al Model ("Modelo") y/o pasa a la View ("Vista") para que se encargue de generar la interfaz de usuario. Nota: se recomienda la lectura de la explicacin escrita en Wikipedia Aqu se puede visualizar un diagrama que muestra la relacin con sus componentes (ms adelante entraremos en detalles, por ahora solo veremos lo bsico y esencial para entender el funcionamiento del patrn). Aclaracin importante: los patrones de diseo son "la mejor solucin encontrada para resolver un problema genrico y recurrente", pero, la solucin es una "gua" y no un "manual" para resolver un problema especfico, ya que cada contexto tendr sus particularidades. ZF "implementa su versin" del patrn de diseo, por lo tanto no significar nunca que lo que veamos de ZF es sinnimo puro de MVC, en realidad veremos que existen muchos frameworks que implementan su propia versin del patrn, y todas estarn correctas. Un patrn de diseo es solo eso, una gua.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

Curso: "PHP 5 POO con Zend Framework" 2011


Como obtener y buscar informacin Oficial de Zend Framework
Unos de los principios que seguiremos en el del taller es el de leer y buscar informacin en la documentacin oficial de Zend Framework, cosa que la mayora es lo que menos hace, o lo deja como ltima instancia, cuando debiera ser todo lo contrario. Este principio es conocido como RTFM es un acrnimo que en ingls significa "Read The Fucking Manual", (Lee el maldito manual" en espaol). La documentacin se organiza en dos grandes puntos: el APIs y la Gua de Referencia: 1. APIs: Si estamos buscando informacin sobre un mtodo particular, un atributo de alguna clase o bien no recordamos el nombre de una constante. Aqu podemos obtener toda la informacin y documentacin de las clases y componentes de Zend Framework a unos pocos clic de distancia. 2. Gua de Referencia o Manual: Con ms de 1000 pginas y sobre 500 ejemplos, tiene un sistema de bsqueda dentro del manual, contiene en detalle todos los Componentes de Zend Framework con una notable calidad en sus explicaciones y cdigos de ejemplo. 3. Adems de contar con la documentacin de las APIs y de la Gua de Referencia de Zend Framework en el sitio de ZF con formato HTML, tenemos disponible como descarga la versin de pdf referencia y la gua de estudio para la certificacin. de la gua de

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

Curso: "PHP 5 POO con Zend Framework" 2011


Estructura de una aplicacin bajo Zend Framework
Primero necesitaremos crear un directorio que representar nuestra aplicacin. Para este ejemplo usaremos el nombre proyecto-zf, donde posteriormente

necesitaremos crear la estructura estndar (definida por Zend) para alojar todos los elementos que vayamos necesitando agregar de acuerdo a los componentes de MVC que requiere nuestra aplicacin. La estructura de directorio debera de tener la siguiente forma:

proyecto-zf/ application/ controllers/ models/ views/ scripts/ helpers/ filters/ library/ public/

Podemos ver una estructura que probablemente se repetir en la mayora de los framework: los directorios controllers, models y views. Cada vez que necesitemos crear una funcionalidad en nuestro sistema deberemos crear cada uno de los archivos que representarn a los componentes del MVC para poder responder a ese
Aqu podemos empezar a entender las ventajas de un framework a la hora de organizar la estructura de nuestro sistema: nunca ms discutiremos donde deberamos ubicar el archivo de configuracin o donde deberan ir los componentes de nuestro sistema. Ya est resuelto y nosotros debemos seguir la forma de trabajo definida.

requerimiento. Por lo general crearemos en cada directorio un controller, un modelo y una vista (aunque esto puede variar, en esencia es la situacin ms tpica).

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

10

Curso: "PHP 5 POO con Zend Framework" 2011

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

11

Curso: "PHP 5 POO con Zend Framework" 2011


Por ejemplo, si queremos crear una funcionalidad que muestre los datos de un usuario podramos crear un controller "Usuario" que pedir al modelo "Usuario" los datos de un ID determinado y que posteriormente requerir que una vista "ver" genere dinmicamente el cdigo html para representar todos esos datos. La url se vera de esta forma: http://proyecto-zf/usuario/ver/id/1 Esta url la podemos descomponer de la siguiente manera: 1. proyecto-zf : nombre de nuestro proyecto, que ser sustituido oportunamente por la url oficial de nuestro sitio, como bolsadeideas.cl 2. usuario : nuestro controller visto desde el exterior 3. ver : sera la "accin" ("action") que ejecutar nuestro controller (cada controller podr tener una o ms acciones). 4. id : nuestro parmetro de entrada de datos a travs de get 5. 1 : el valor pasado por parmetros. Aqu se aplica un principio llamado "Convencin sobre Configuracin " (que se populariz con el surgimiento de Ruby On Rails) donde en vez de contar con un extenso y complejo archivo de configuracin para definir cmo traducir la url y generar que todos los componentes entiendan qu y cmo deben reaccionar, se pasa a una convencin y se elimina el problema de configuracin (y aqu es donde entra en juego nuestro bootstrap):

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

12

Curso: "PHP 5 POO con Zend Framework" 2011

el primer bloque que va de la primer barra ("/") posterior al nombre del proyecto hasta la siguiente barra se corresponder con el nombre del controller. Por lo tanto deber existir un archivo fsico UsuarioController.php en el directorio "controllers" (si no existe, el sistema dar error por no encontrarlo). el segundo bloque hasta la siguiente barra ser la "accin" y se traducir como un mtodo del controller con la siguiente nomenclatura " verAction". Y todo lo que siga a continuacin ser siempre los parmetros con la siguiente estructura: "parmetro/valor/parmetro/valor". Nuevamente, encontramos la misma ventaja que al principio, tenemos resuelta la forma de organizar nuestro sistema y donde colocar cada componente y funcionalidad, que no es poco si consideramos el tiempo que se puede perder en tratar de definir todas estas reglas y estructuras si las discutimos de cero con un equipo de personas donde cada uno tiene su propia opinin de cmo hacerlo.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

13

Curso: "PHP 5 POO con Zend Framework" 2011


Diseo "No Modular" versus "Modular"
ZF permite dos tipos de estrategias a la hora de organizar nuestro sistema, la forma "no modular" (como vimos recin) y la forma "modular", que lo nico que hara es agregar un nivel ms en nuestra url y una nueva estructura de directorios que se repetir por cada mdulo, generando una nueva estructura MVC dentro de cada uno. El ejemplo anterior http://proyecto-zf/usuario/ver/id/1 Cambiara por http://proyecto-zf/admin/usuario/ver/id/1 Y la estructura de directorios mantendra la convencin que el primer segmento representar siempre al mdulo al cual debemos dirigirnos.

De qu nos sirve? Nos permite agregar un nivel ms de organizacin en nuestros sistemas, crear mdulos que podran ser usados entre aplicaciones. Qu recomiendan? Aprender a usar el sistema modular, la mayor dificultad es aprender a organizarse y definir claramente los mdulos que tendr nuestro sistema. El error ms comn es contar con mdulos y crear controllers con el mismo nombre (porque no se nos ocurri un nombre para cada uno): /usuario/usuario/ver/id/1

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

14

Curso: "PHP 5 POO con Zend Framework" 2011


La estructura se vera de la siguiente forma:
En la misma estructura que el primer ejemplo "no modular" donde antes tenamos un subdirectorio que representaba el lugar donde guardar todos nuestros controllers, ahora tenemos un nivel mayor de abstraccin y de organizacin: el mdulo

En vez de tener el manejo de usuarios y de administradores todos juntos en un mismo directorio de controllers, bien podramos tener un "mdulo" organizado para resolver cada tema en particular, y que posteriormente hasta podra reusarse entre proyectos.
Ilustracin 1 - Ejemplo del proyecto Zend Framework

Aqu podemos visualizar el contenido de ambos mdulos: admin y usuarios, donde cada uno mantiene la misma organizacin MVC pero con su propio contenido de acuerdo a la responsabilidad del mdulo.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

15

Curso: "PHP 5 POO con Zend Framework" 2011


Podemos utilizar la estructura de directorio del proyecto que mejor se adapte a nuestras necesidades. Esto es lo que hace a Zend Framework ser flexible, y la estructura del proyecto de ZF no es una excepcin. No hay nada especial sobre la estructura del proyecto anterior, con excepcin de algunos de los componentes MVC que estaremos utilizando y explicaremos a continuacin.

En esta primer etapa usaremos una versin "no modular" del sistema.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

16

Curso: "PHP 5 POO con Zend Framework" 2011


El directorio "public"
El directorio public deber tener todos los archivos que pueden ser directamente accesibles desde nuestro servidor (archivos pblicos, que no nos debera afectar en nada si son bajados desde el exterior de forma annima), tales como el "bootstrap" (index.php), imgenes, css, js etc... y deber incluir su respectivo archivo .htaccess con las reglas de acceso. En esencia se busca que cualquier acceso a nuestra estructura sea redirigida a nuestro index.php para tener el control por un nico punto de acceso, a menos que digamos lo contrario, como sucede con las imgenes, css y js, que deben poder accederse de forma pblica o no funcionaran. Vamos a asumir que estamos corriendo sobre nuestra mquina local y que nuestro directorio public es accesible mediante la url: http://localhost/proyecto-zf

TIPS Si tenemos la ruta a nuestro servidor web en c:\xampp\htdocs podemos decirle a nuestro IDE que cree en este directorio todos los proyectos, lo que nos permitir de forma simple poder trabajar en varios sistemas a la vez accediendo a http://localhost/nombreproyecto

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

17

Curso: "PHP 5 POO con Zend Framework" 2011


Instalando Zend Framework
Ahora debemos bajar el cdigo fuente del framework desde el sitio oficial en download latest e instalarlo dentro de nuestro directorio "library" con el nombre "Zend". Es decir copiar del library del framework que descargamos y descomprimimos hacia el library de nuestro proyecto. Adems de la de descarga Zend del las libreras y

componentes

Framework,

podemos

descargar la gua de Referencia para el desarrollador y la gua de estudio para la certificacin en formato pdf.

Descargamos Zend Framework "ltima versin tar.gz". Luego lo descomprimimos, y copiamos la carpeta Zend (ubicada en \library\Zend) en el directorio library de nuestro proyecto (c:/xampp/htdocs/zfproyecto/library).

Creando nuestro archivo .htaccess


ZF est diseado implementando el patrn Front Controller: ste patrn se encarga de recibir y controlar todas las peticiones que vienen desde una URL (exterior), y segn estos parmetros de peticin direcciona hacia un controlador especifico (de acuerdo a la informacin que definimos en la url), posteriormente llama a la accin deseada de nuestro controlador.

Recordar: configuracin versus convencin, si respetamos las reglas de nombres el framework logra encontrar los componentes que tiene que ejecutar.

Esto significa que se debe reescribir todas las peticiones a un nico script PHP que inicializar el FrontController, de ah la razn de por qu si queremos acceder a un directorio particular el sistema (a travs de las reglas de .htaccess) redireccionar

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

18

Curso: "PHP 5 POO con Zend Framework" 2011


todas las peticiones a nuestro "bootstrap" (index.php) para luego a travs del FrontController decidir a qu controller derivar el control del sistema. Para el servidor web Apache se debe crear el archivo proyecto-zf /public/.htaccess con el siguiente contenido: Cdigo:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]

Esta regla de sobreescritura se entregar a todas las peticiones de URLs que no terminen en .js, .ico, .gif, .jpg, .png, or .css a travs de index.php. El archivo index.php es la puerta de entrada a nuestra aplicacin, equivaldra al mtodo "main" de Java o C, por eso se lo conoce comnmente con el nombre bootstrap, que quiere decir el arranque, o proceso de inicio de la aplicacin. Casi sin darte cuenta, eso es todo! Zend Framework est instalado y listo para usar.

Repasemos
1. Creamos nuestro proyecto 2. Creamos la estructura de directorios 3. Creamos nuestro bootstraps con su .htaccess 4. Bajamos Zend en el directorio library Estamos listos!

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

19

Curso: "PHP 5 POO con Zend Framework" 2011

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

20

Curso: "PHP 5 POO con Zend Framework" 2011


Mi primer Bootstrap
Lo primero que tenemos que definir es cul es nuestro bootstrap por defecto, para ello seguiremos el manual de Zend y crearemos nuestro index.php Antes de empezar necesitamos crear un archivo .htaccess y lo guardamos dentro de la carpeta public del proyecto. Debe de contener el siguiente cdigo:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]

A continuacin creamos nuestro index.php (bootstrap) y lo guardaremos dentro de la carpeta public junto a nuestro .htaccess. Deber contener el siguiente cdigo:
<?php error_reporting(E_ALL | E_STRICT); $rootPath = dirname(dirname(__FILE__)); set_include_path(get_include_path() . PATH_SEPARATOR . $rootPath . '/library' . PATH_SEPARATOR); require_once 'Zend/Controller/Front.php'; $frontController = Zend_Controller_Front::getInstance(); $frontController->setControllerDirectory('../application/controllers') ->throwExceptions(true) ->dispatch();

Listo, esto es lo mnimo para funcionar: 1. Agregamos el mximo de detalle para los errores (ya que estamos desarrollando) 2. definimos cual es la ruta por defecto donde est posicionado el sistema 3. definimos la ruta por defecto para encontrar la librera del framework 4. requerimos el Front Controller

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

21

Curso: "PHP 5 POO con Zend Framework" 2011


5. y definimos cual es la ruta donde se deben buscar los controllers (por defecto buscar un archivo con el nombre IndexController.php)

Nuestro Controlador por Defecto


Debemos crear el archivo IndexController.php guardndolo dentro del directorio application /controllers del proyecto. Debe de contener lo siguiente:
<?php require_once "Zend/Controller/Action.php"; class IndexController extends Zend_Controller_Action { public function indexAction() { $this->view->titulo = "Bienvenido a Zend Framework"; } }

Lo que hicimos aqu es definir el controller por defecto, mantuvimos la "convencin" de crear un IndexController y extendemos de la clase Zend_Controller _Action toda la estructura y funcionalidad base que debe contar un Controller.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

22

Curso: "PHP 5 POO con Zend Framework" 2011

Importante: Convencin de Nombres Aqu nos enfrentamos por primera vez a una convencin de nombres para una clase que es completamente ajena y distinta a los estndares preestablecidos. Lo habitual sera que una clase se llamara ZendControllerAction (como en Java), pero Zend decidi que en el nombre de la clase se define la ruta para llegar a ella (conocido caso del problema de manejo de paquetes / espacios de nombres de PHP). Por consiguiente, si tenemos una clase que dice Zend_Controller _Action la debemos buscarla fsicamente dentro de library/Zend/Controller/Action.php Y su nombre interno ser abstract class Zend_Controller_Action implements Zend_Controller_Action_Interface Recomendamos como ejercicio empezar a conocer el cdigo de ZF: busquen dentro del directorio library y editen el cdigo fuente de Action.php e investiguen un rato cmo est escrito, cmo funciona, el uso de PHPDoc, etc.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

23

Curso: "PHP 5 POO con Zend Framework" 2011


Continuando con el ejemplo, tenemos un mtodo:
public function indexAction() { $this->view->titulo = "Bienvenido a Zend Framework"; $this->render(); }

que contiene una sentencia que crea un atributo "titulo", algo que posteriormente dentro de la vista lo veremos cmo $this->titulo, como si fuera un atributo pblico de la vista que fue cargado desde el controller. La sentencia render() se usa para especificar que el control de la ejecucin del controller se dirija a la vista.

TIPS Aunque podemos eliminar la lnea render de nuestro controller, cuando termine la ejecucin del mtodo este ir automticamente a su vista. De todas formas se sugiere siempre hacer uso del render, ya que ZF se puede configurar que la aplicacin no haga esta resolucin automtica y todo nuestro sistema dejara de funcionar.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

24

Curso: "PHP 5 POO con Zend Framework" 2011

Atributos Pblicos?! Aqu es donde nos empezamos a dar cuenta que el estndar de POO prohibido los atributos pblicos no se cumple al pi de la letra, y que en este nuevo contexto de MVC y de solucin Zend estara aceptada esta prctica. Podramos razonar que en s no estamos diseando una clase Vista de cero, estamos trabajando con un componente que existe previamente y que estamos accediendo a sus datos pblicos de forma gil ( bueno, ni nosotros nos cremos esta explicacin ;-), pero la razn real debe haber sido ofrecernos una forma gil de pasar los datos entre el Controller y la Vista. Nosotros no podemos definir mtodos get/set porque la instancia ya se encuentra creada y los atributos los estamos definiendo dinmicamente )

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

25

Curso: "PHP 5 POO con Zend Framework" 2011


Creando nuestra vista index.phtml
Ahora solo nos queda crear el archivo de vista con extensin .phtml (estndar definido por Zend). Creamos un archivo de nombre index.phtml y lo guardamos dentro de la carpeta application/views/scripts/index/. Siguiendo las "convenciones", siempre necesitamos crear para la vista un directorio que se llame igual que el controller. En este caso crearemos una carpeta llamada "index", igual que el controller IndexController.php. Dentro de index.phtml escribimos lo siguiente:
<h3><?php echo $this->titulo ?></h3> <p>Hola Mundo con Zend Framework! :-)</p>

Ahora, si hicimos todo correctamente, lo probamos escribiendo la siguiente direccin en el navegador:


http://localhost/proyecto-zf/public/

Ey! la primer lnea no tiene un ";" al final? Bueno, en este caso tampoco es necesario ya que le estamos diciendo a PHP con el ?> que no sigue nada ms, por lo tanto el ";" se puede evitar

Felicitaciones!, hemos terminado nuestro primer proyecto con Zend Framework Hola Mundo!.

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

26

Curso: "PHP 5 POO con Zend Framework" 2011


En resumen
En este ejemplo logramos recibir una peticin del exterior a travs de la url /proyectozf/public/, que gracias al bootstrap redirigi el control al controller por defecto IndexController, y este le pas los datos necesarios a la vista, y esta, se encarg de visualizar el valor recibido como si fuera un atributo propio (creado dinmicamente). Tarea: Intenta seguir todos estos pasos y cumplir con este ejemplo, si tienes dudas o problemas, enva una consulta al foro. Posteriormente, antes de terminar la semana, recibirs una tarea desafo relacionada con los temas vistos en este mdulo!
Fin.

Enva tus consultas a los foros!


Aqu es cuando debes sacarte todas las dudas haciendo consultas en los foros correspondientes

AUTOR: Andrs Guzmn Fontecilla. Email: andresguzf@gmail.com WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5

27