2_3_Zend_Tool

download 2_3_Zend_Tool

of 16

Transcript of 2_3_Zend_Tool

  • 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