Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
1
Zend_Tool
Introduccin
Todos los logos y marcas utilizados en este
documento, estn registrados y pertenecen a
sus respectivos dueos.
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
2
Objetivos Luego de hacer la primera configuracin del entorno para que funcionen los comandos en consola
provistos por Zend Framework, pasaremos a la profundizacin de la forma de uso de esta nueva
funcionalidad ofrecida por Zend_Tool.
Sobre los contenidos de las guas de estudio: si bien la mayora de la informacin que vamos a
referenciar en estas guas de estudio se extraen de los manuales oficiales, las guas nunca
debern ser sustituto de los manuales, ya que esta debe ser siempre nuestra fuente principal de
consulta. En las guas iremos agregando experiencia personal obtenida del trabajo diario con el
framework y ordenando los temas con un criterio que consideramos evolutivo y que facilita el
aprendizaje simulando situaciones cercanas a la realidad de cualquier desarrollo que se inicia de
cero.
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
3
Generacin rpida de cdigo Zend Framework, aprendiendo de otros frameworks como Ruby On Rails y Grails, el cual nos
impresionaba cmo con pocos comandos en consola se poda crear un sistema de Blogs (casi sin
programar ninguna lnea de cdigo), en las ltimas versiones el equipo de desarrollo de Zend empez a
proveernos de una herramienta similar, si bien an le falta algo de camino por recorrer (no es un Ruby
On Rails), pero que nos puede servir para salir de un apuro (crear un proyecto base rpidamente), y
visto desde otra ptica, para aprender de los estndares que se estn definiendo a la hora de crear
proyectos (cada vez que ejecutamos un comando, generar automticamente la ubicacin y nombre del
componente) y las mejoras en el inicio (bootstrap) y configuracin del sistema.
Lo primero que vimos (en el documento anterior) fue crear el esqueleto de un proyecto desde cero,
posicionados siempre en el directorio home de nuestro web server:
cd C:\xampp\htdocs
zf create project holamundo
Esto nos gener la siguiente estructura estndar, lo cual es importante destacar y recomendar seguir, ya
que existen muchos proyectos que van creando sus propias estructuras, y no siempre esto es
conveniente si no est bien fundamentado y justificado.
De la estructura generada podemos observar lo siguiente:
Primero que todo, tenemos al directorio public. Este no solo guarda nuestro index.php quien se encarga de arrancar nuestra aplicacin, sino que adems podra contener archivos de imgenes, hojas de estilos css, javascript etc.
Luego tenemos el directorio library, lugar donde guardamos nuestros propios componentes o libreras y las de Zend, ya no es necesario incluir las de Zend ya que las configuramos en el documento anterior, en el include path (php.ini) de PHP5.
Despus vemos que tenemos la carpeta tests, lugar donde llevaremos a cabo nuestras pruebas unitarias (testing). Esto puede ser usado generalmente para probar los modelos que deben contener la lgica de negocio y nuestros controladores.
Por ltimo pero no menos importante es el directorio de la aplicacin application. Este es considerado como el ms importante, ya que es donde creamos y guardamos nuestra aplicacin MVC, los controladores, modelo, vistas (script o plantillas y view helper) y archivos de configuracin.
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
4
Primer detalle a tener en cuenta, el proyecto por defecto es creado
sin una estructura modular, algo que no necesariamente tenemos
por qu usar siempre (en proyectos rpidos y/o pequeos tal vez ni
sea conveniente subdividirlo en mdulos). Nuestra recomendacin
sin embargo es invertir a futuro y ya organizarnos con mdulos, los
mdulos los veremos dentro de las prximas lecciones o mdulos del
curso.
Nuestro proyecto cuenta con nuevos directorios por
defecto: docs y tests. En el caso de docs contamos con
un README.txt que nos explica cmo configurar -en
caso de necesitarlo- un virtual host
La carpeta de tests es el lugar donde llevaremos a cabo nuestras pruebas unitarias
(testing). Esto puede ser usado generalmente para probar los modelos que deben
contener la lgica de negocio y nuestros controladores.
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
5
Destacamos informacin importante de nuestro proyecto (que tal vez en algn futuro podamos necesitar cambiar, tanto a mano como a travs de otros comandos que nos provee el propio Zend_Tool):
Otro detalle no menor, que parece invisible es el
archivo oculto generado .zfproject.xml, que tiene toda
la informacin de lo que va generando los comandos en
consola (Zend_Tool) en formato XML.
Este archivo es todo un tema de discusin cuando se
trabaja en equipo y a travs de sistemas de
versionado como SVN, ya que si cada usuario agrega
componentes de forma no coordinada a travs de
Zend_Tool puede generar inconsistencias a la hora de
unir los distintos xml de cada usuario.
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
6
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
7
Nuestro nuevo Bootstrap Nuestro archivo index.php ubicado dentro del directorio public quedara ms o menos as:
Se define una nueva variable de configuracin
APPLICATION_ENV para definir el tipo de entorno de
ejecucin de nuestro sistema, si este est en etapa de
desarrollo o es un sistema en produccin (lo cual
afectar su funcionamiento ya que definir luego qu
tags de nuestra configuracin leer desde el archivo
/application/configs/application.ini).
Por defecto se encuentra en produccin pero
podemos modificarla tanto desde nuestro servidor web
como dentro del mismo .htaccess agregando una lnea
como:
SetEnv APPLICATION_ENV development
Se recomienda desde el inicio configurar nuestra
aplicacin en modo developmentpara tomar todas
las configuraciones por defecto en el manejo de
errores, y poder seguir agregando informacin
especfica para nuestro desarrollo.
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
8
Se recomienda desde el inicio configurar nuestra aplicacin en modo development para tomar todas las configuraciones por defecto en el manejo de errores, entonces dentro del mismo .htaccess agregamos una lnea como:
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]
Originalmente, cuando iniciamos con ZF, todo el cdigo de arranque (Bootstrap) se encontraba
enteramente en el archivo index.php, y hasta en cdigo estructurado ;-) Ahora las cosas han cambiado
(por suerte) y encontraremos mucho ms orden en la estructura interna de nuestro sistema.
/application/Boostrap.php
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
9
Se contempla por defecto la posibilidad de guardar las
excepciones en un archivo de log
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
10
Ojo, muy interesante que a veces
se encuentra en el cdigo de todo
proyecto donde trabajan muchos
desarrolladores (nadie es perfecto)
una mala prctica, hacer una
asignacin en el mismo if, algo que
cualquier IDE lo marca como un
posible accidente al codificar. ;-)
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
11
Creacin de controllers C:\xampp\htdocs>cd holamundo
C:\xampp\htdocs\holamundo>
Siguiendo la lgica de los comandos presentados hasta el momento, dentro del proyecto holamundo,
solo debemos hacer:
zf create controller Prueba (resultado del comando)
C:\xampp\htdocs\holamundo>zf create controller Prueba Note: PHPUnit is required in order to generate controller test stubs. Creating a controller at C:\xampp\htdocs\holamundo/application/controllers/Prueb aController.php Creating an index action method in controller Prueba Creating a view script for the index action method at C:\xampp\htdocs\holamundo/ application/views/scripts/prueba/index.phtml Updating project profile 'C:\xampp\htdocs\holamundo/.zfproject.xml' C:\xampp\htdocs\holamundo>
Por lo que nos genera un controller con los actions por defecto init() e index(), ms el correspondiente index/index.phtml, lo cual tambin genera 3 nuevas entradas en nuestro xml por cada archivo creado.
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
12
y el resultado de acceder a prueba ser http://localhost/holamundo/public/prueba
Nota: an especificando el nombre del controller en minsculas, Zend_Tool se
encarga de generar correctamente los archivos y clases con la primera letra
en maysculas. Y en caso de repetir el mismo comando, detecta su existencia
y aborta la ejecucin (algo que actualmente no sucede con la generacin del
layout, que veremos ms adelante)
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
13
Creando actions para nuestros controllers La operacin es similar, siempre haciendo referencia al controller destino del action zf create action login Prueba
C:\xampp\htdocs\holamundo>zf create action login Prueba Note: PHPUnit is required in order to generate controller test stubs. Creating an action named login inside controller at C:\xampp\htdocs\holamundo/ap plication/controllers/PruebaController.php Updating project profile 'C:\xampp\htdocs\holamundo/.zfproject.xml' Creating a view script for the login action method at C:\xampp\htdocs\holamundo/ application/views/scripts/prueba/login.phtml Updating project profile 'C:\xampp\htdocs\holamundo/.zfproject.xml' C:\xampp\htdocs\holamundo>
class PruebaController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { // action body } public function loginAction() { // action body } }
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
14
Creando vistas para nuestros controllers zf create view Prueba segunda
Updating project profile 'c:\xampp\htdocs\holamundo/.zfproject.xml' lo cual generar un nuevo view en /scripts/prueba/segunda.phtml Todo muy controlado y preciso ;-)
Creacin de Models La creacin de los Modelos de nuestra capa de dominio del problema (que no necesariamente significa que sean solo las clases de persistencia, lo cual veremos en los prximos mdulos de curso con los ejemplos de DbTable para trabajar con bases de datos y consultas SQL). zf create model Usuario
Creating a model at c:\xampp\htdocs\holamundo/application/models/Usuario.php Updating project profile 'c:\xampp\htdocs\holamundo/.zfproject.xml'
Lo cual generar en nuestra estructura (an sin mdulos) application\models\Usuario.php
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
15
Creacin de Models
Curso: "PHP 5 POO con Zend Framework" 2011
AUTOR: Andrs Guzmn Fontecilla. Email: [email protected] WEB: http://www.bolsadeideas.cl/servicios/cursos-de-capacitacion/ LICENCIA: http://creativecommons.org/licenses/by-nc/2.5
16
En Resumen Hemos visto los primeros pasos en el uso bsico de Zend_Tool, creacin del proyecto y componentes
(que no presentan mayor complejidad que entender el concepto y seguir el manual), y repasamos
algunos conceptos generales para estar todos nivelados en los conocimientos esenciales.
Si ya conocas lo bsico de ZF, con esta nueva herramienta, ya podrs crear rpidamente un proyecto y
sus componentes en un cerrar y abrir de ojos por lo que, para sacarnos el polvo, haremos a
continuacin en la primer tarea desafo que los obligar a realizar una aplicacin con el cuidado y
detalle de un cirujano, donde cuanto menos esfuerzo hagas (menos cdigo, mayor productividad)
ms puntos preservars en la tarea.
Est de ms decir que siempre hay un proceso de investigacin en cada desafo, y que el manual ser
nuestro amigo durante el proceso.
Prximamente la segunda tarea!
Saludos!
Enva tus consultas a los foros!
Aqu es cuando debes sacarte todas las dudas
haciendo consultas en los foros
correspondientes