31
Sesión 01 Introducción y funcionamiento básico Instructor: Ing. Ernesto Anaya Ruiz Desarrollo Web Profesional con PHP y Zend Framework

Zend Manual

Embed Size (px)

DESCRIPTION

Conceptos y aplicaciones de lo que es un ZendFramework

Citation preview

Sesión 01

Introducción y funcionamiento

básico

Instructor: Ing. Ernesto Anaya Ruiz

Desarrollo Web Profesionalcon PHP y Zend Framework

¿Que es un framework?

Framework

• La palabra inglesa "framework" define, en términos generales, un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular, que sirve como referencia para enfrentar y resolver nuevos problemas de índole similar.

• Zend Framework es un framework de código abierto para desarrollar aplicaciones web y servicios web con PHP5.

• Zend Framework es una implementación que usa código 100% orientado a objetos.

• La estructura de los componentes de ZF es algo único; cada componente está construido con una baja dependencia de otros componentes. Esta arquitectura débilmente acoplada permite a los desarrolladores utilizar los componentes por separado. A menudo se refiere a este tipo de diseño como "use-at-will" (uso a voluntad).

• Zend Framework ofrece un gran rendimiento y una robusta implementación MVC.

Arquitectura: Patrón MVC

Patrón MVC

MVC

• Modelo - ofrece las funcionalidades básicas de la aplicación incluyendo las rutinas de acceso a datos y la lógica de negocios.

• Vista - se encarga de generar lo que se presenta al usuario a partir de los datos que recibe del controlador, al mismo tiempo que recogen los datos que brindan los usuarios.

• Controlador - son los que unen el patrón. Según el pedido del usuario y otras variables ellos pueden decidir ejecutar otro controlador o manipular los datos del modelo para luego asignarle el resultado a una vista en particular. Es recomendable mantener el Controlador lo más limpio posible.

Componentes zf

Instalación del entornode desarrollo y Herramientas

• Servicios– Wamp

• Apache

• MySQL

• PHP

• IDE + tools• Netbeans• Subversion• Xdebug• phpMyAdmin• firebug

Configuración de Apache

• Cargar Módulo vhost

• Cargar Módulo mod_rewrite

• Incluir archivo de configuración de vhosts

conf/httpd.confLoadModule vhost_alias_module modules/mod_vhost_alias.so

conf/httpd.confLoadModule rewrite_module modules/mod_rewrite.so

conf/httpd.confInclude conf/extra/httpd-vhosts.conf

Configuración de Apache

• Agregar un vhost por cada proyecto

• Editar nuestro archivo “hosts”

conf/extra/httpd-vhosts.conf<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "D:\www\zfdp\trunk\src\public" ServerName zfdp DirectoryIndex index.php ErrorLog "logs/zfdp-error.log" CustomLog "logs/zfdp-access.log" common <Directory "D:\www\zfdp\trunk\src\public"> AllowOverride All </Directory></VirtualHost>

c:\WINDOWS\system32\drivers\etc\hosts127.0.0.1 zfdp

Configuración de PHP

• Agregar el directorio library del Zend Framework al include_path

• Habilitar los short open tags.

• Aumentar max. uso de memoria.

C:\wamp\bin\apache\Apache2.2.11\bin\php.iniinclude_path = ".;C:\wamp\apps\ZendFramework-1.11.0\library"

C:\wamp\bin\apache\Apache2.2.11\bin\php.inishort_open_tag = On

C:\wamp\bin\apache\Apache2.2.11\bin\php.inimemory_limit = 128M

Configuración de NetBeans• Indicarle la ubicación del binario php.exe

• Indicarle la ruta de Zend Framework

Configuración de NetBeans• Indicarle la ubicación del CLI de Zend Framework

Creemos un nuevo proyecto

Estructura de un proyecto nuevo

Bootstraping

Configuración de NetBeans

• La clase Bootstrap define que recursos y componentes que se deben inicializar. De forma predeterminada, el Front Controller es inicializado (Zend_Controller_Front), y configura por defecto el directorio “application/controllers/” para manejar los Controladores (Action Controllers).

Bootstrap por defecto

<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { } ?>

Bootstrap con métodos _init

<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {     protected function _initFoo()     {         // ...     }       protected function _initBar()     {         // ...     }       protected function _initBaz()     {         // ...     } } ?>

Ejemplos de Bootstrap

<?php // index.php 

// ...

// solo se executa _initFoo() $application->bootstrap('foo'); 

// solo se executa _initFoo() y _initBar() $application->bootstrap(array('foo', 'bar')); 

// executa todos los métodos _init del bootstrap (por defecto) $application->bootstrap(); 

?>

Despachador de peticiones

Patrón: Front Controller

• Zend_Controller_Front implementa el patrón Front Controller usado en aplicaciones MVC . Su propósito es inicializar el entorno de la solicitud, rutear la solicitud entrante, y luego hacer un envío de cualquier de las acciones descubiertas; le agrega las respuestas y las regresa cuando se completa el proceso.

¿Dónde se usa el Front Controller?

<?php // index.php 

// ... 

/** Zend_Application */ require_once 'Zend/Application.php'; 

// Create application, bootstrap, and run $application = new Zend_Application(     APPLICATION_ENV,     APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap()             ->run(); ?>

<?php     public function run()     {         $front   = $this->getResource('FrontController');         $default = $front->getDefaultModule();         if (null === $front->getControllerDirectory($default)) {             throw new Zend_Application_Bootstrap_Exception(                 'No default controller directory registered with front controller'             );         }         $front->setParam('bootstrap', $this);         $response = $front->dispatch();         if ($front->returnResponse()) {             return $response;         }     } ?>

Zend/Application/Bootstrap/Bootstrap.php

index.php

¿Cómo puede atender TODAS las solicitudes?

RewriteEngine OnRewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^.*$ index.php [NC,L]

.htaccess

Configuración (local) de Apache

Línea de comando deZend Framework

Integración de ZF CLI en Netbeans

¿Preguntas?