Sesión 01 Introducción y funcionamiento básico Instructor: Ing. Ernesto Anaya Ruiz Desarrollo Web Profesional con PHP y Zend Framework
Sesión 01
Introducción y funcionamiento
básico
Instructor: Ing. Ernesto Anaya Ruiz
Desarrollo Web Profesionalcon PHP y Zend 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.
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.
• 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
• 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 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();
?>
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