Вы находитесь на странице: 1из 33

Frameworks MVC para el Desarrollo Web - Symfony

Esteban Saavedra L´opez

CEO Opentelematics Internacional Bolivia jesaavedra@opentelematics.org http://jesaavedra.opentelematics.org http://esteban.profesionales.org

Frameworks MVC para el Desarrollo Web - Symfony Esteban Saavedra L´opez CEO Opentelematics Internacional Bolivia jesaavedra@opentelematics.org
Frameworks MVC para el Desarrollo Web - Symfony Esteban Saavedra L´opez CEO Opentelematics Internacional Bolivia jesaavedra@opentelematics.org

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Tabla de Contenidos

  • 1 Introducci´on a los Frameworks

  • 2 Patron MVC

  • 3 Symfony

  • 4 Caracter´ısticas de un Proyecto Symfony

  • 5 Creaci´on de un proyecto

  • 6 Demostraci´on

  • 7 Conclusiones

  • 8 Referencias

Tabla de Contenidos 1 Introducci´on a los Frameworks 2 Patron MVC 3 Symfony 4 Caracter´ısticas de

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Que es un Framework?

Es una estructura de soporte definida en la cual otro proyecto de

software puede ser organizado y desarrollado.

Se han convertido en la piedra angular de la moderna ingenier´ıa

del software

Es una estructura software compuesta de componentes

personalizables e intercambiables para el desarrollo de una aplicaci´on.

En otras palabras, es una aplicaci´on gen´erica incompleta y

configurable a la que podemos aadirle las ultimas

´

piezas para

construir una aplicaci´on concreta.

Que es un Framework? Es una estructura de soporte definida en la cual otro proyecto de

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Cual el objetivo de un framework?

Desarrollo r´apido

Desarrollo estructurado

Reutilizaci´on de c´odigo

Disminuir el esfuerzo en el desarrollo

Aprovechamos las funcionalidades ya implementadas.

No debemos reinventar la rueda

Nos concetramos directamente en la soluci´on del problema

Tener como aliado a las metodolog´ıas de desarrollo Ag´ıles (XP,

AD)

Cual el objetivo de un framework? Desarrollo r´apido Desarrollo estructurado Reutilizaci´on de c´odigo Disminuir el esfuerzo

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Patr´on MVC

Modelo Controlador Vista
Modelo
Controlador
Vista
Patr´on MVC Modelo Controlador Vista Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web -

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Que es Symfony

Es un framework para el desarrollo de aplicaciones web

Es la respuesta de php para Ruby on Rails

Permite el desarrollo de aplicaciones web de forma r´apida

Que es Symfony Es un framework para el desarrollo de aplicaciones web Es la respuesta de

(Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Filosof´ıa de Symfony

Reutilizaci´on de c´odigo

Desarrollar aplicaciones web de forma r´apida, sencilla y divertida

Utilizar los mejores componentes actualmente disponibles

Combinar todo en un paquete f´acil de usar

Symfony provee el pegamento, de tal forma que uds no haga el suyo.

Filosof´ıa de Symfony Reutilizaci´on de c´odigo Desarrollar aplicaciones web de forma r´apida , sencilla y divertida

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Por que Symfony

Se basa en el patr´on MVC

Tiene todo lo necesario para desarrollar aplicaciones Web

Soporta Ajax

Posee buena documentaci´on

Es multiplataforma

Posee una numerosa comunidad de desarrolladores y usuarios

Inspirado en Ruby on Rails (Padrino de la mayor´ıa de los

Frameworks)

Est´a en constante desarrollo

Por que Symfony Se basa en el patr´on MVC Tiene todo lo necesario para desarrollar aplicaciones

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Componentes de Symfony

Propel: ORM para el acceso a

Base de datos

Creole: Maneja la capa de

abstracci´on de BD

Phing: Mapeador XML

Pake: Gesti´on de ejecuci´on de

Scripts

Componentes de Symfony Propel : ORM para el acceso a Base de datos Creole : Maneja
Componentes de Symfony Propel : ORM para el acceso a Base de datos Creole : Maneja

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Instalaci´on de Symfony

Utilizando Sandbox

Obtener:

http://www.symfony-project.com/get/sf_sandbox.tgz

Basta

con

descomprimir

y

publicarlo

en

el

servidr

web

Mediante PEAR

 

pear

channel-discover

pear.symfony-project.com

 

pear

remote-list

-c

symfony

 

pear

install

symfony/symfony

 
Instalaci´on de Symfony Utilizando Sandbox Obtener: http://www.symfony-project.com/get/sf_sandbox.tgz Basta con descomprimir y publicarlo en el servidr web

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Estructura de un proyecto de Symfony

Symfony proporciona una estructura jer´arquica:

Proyecto

Aplicaci´on

M´odulo

Acci´on

Vista

Estructura de un proyecto de Symfony Symfony proporciona una estructura jer´arquica: Proyecto Aplicaci´on M´odulo Acci´on Vista

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Aplicaciones

Todo proyecto contiene una o m´as aplicaciones

Dentro de un mismo proyecto, las aplicaciones:

Comparten el mismo modelo de datos Poseen vistas independientes No comparten sesiones de usuario Limitaci´on en deducir URLs de las dem´as aplicaciones

Aplicaciones Todo proyecto contiene una o m´as aplicaciones Dentro de un mismo proyecto, las aplicaciones: Comparten

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

M´odulos

Una aplicaci´on est´a compuesta por un conjunto de m´odulos

Un m´odulo agrupa a un conjunto de peticiones

Dentro de una misma aplicaci´on, los m´odulos:

Pueden compartir la misma decoraci´on Comparten la misma sesi´on

M´odulos Una aplicaci´on est´a compuesta por un conjunto de m´odulos Un m´odulo agrupa a un conjunto

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Acciones

Contienen l´ogica de aplicaci´on

Son implementadas como m´etodos

Cada petici´on HTTP resulta en la invocaci´on de una acci´on

Dicha traducci´on se denomina routing, y se basa en la URL

Acciones Contienen l´ogica de aplicaci´on Son implementadas como m´etodos Cada petici´on HTTP resulta en la invocaci´on

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Vistas

Contienen la l´ogica de presentaci´on

Se implementan como plantillas PHP/HTML

El resultado de la acci´on determina qu´e vista se procesa

Vistas Contienen la l´ogica de presentaci´on Se implementan como plantillas PHP/HTML El resultado de la acci´on

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Entornos

Por naturaleza Synfony, prevee la existencia de 3 entronos:

DEV: Entorno de desarrollo

TEST: Entorno de pruebas

PROD: Entorno de Producci´on

Entornos Por naturaleza Synfony, prevee la existencia de 3 entronos: DEV : Entorno de desarrollo TEST

(Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Creaci´on de un proyecto

Instrucci´on

symfony

init-project

libros

Creaci´on de un proyecto Instrucci´on symfony init-project libros Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Que gener´o esto?

Una estructura jer´arquica de directorios:

Apps C´odigo de las aplicaciones

Batch Scripts para la l´ınea de comandos

Cache Cach´e de la conguraci´on

Cong Conguraci´on global del proyecto

Data Schema SQL, datos de prueba

Lib El modelo y bibliotecas de terceros

Log Registros de actividad de Symfony

Plugins Plugins instalados para la el proyecto

Test Pruebas de testeo

Web Ra´ız web: CSSs, JSs, etc.

Que gener´o esto? Una estructura jer´arquica de directorios: Apps C´odigo de las aplicaciones Batch Scripts para

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Pasos para crear un proyecto

  • 1 Crear el proyecto

  • 2 Crear la aplicaci´on

  • 3 Crear el c´odigo del modelo de datos

  • 4 Generar el modelo de datos

  • 5 Crear la base de datos (SQL)

  • 6 Generar los CRUDs

  • 7 Adecuar los templates (CSS y/o JavaScript)

  • 8 Publicar la Aplicaci´on

Pasos para crear un proyecto 1 Crear el proyecto 2 Crear la aplicaci´on 3 Crear el

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

1. Creaci´on de un proyecto

Instrucci´on

symfony

init-project

libros

Detalles del proyecto

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/batch

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/test

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/test/unit

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/test/functional

.....

 

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/web/images

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/web/js

>>

file+

/home/jesaavedra/aplic_web/symfony/libros/web/robots.txt

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/web/uploads

....

 

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/plugins

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/config

>>

file+

/home/jesaavedra/aplic_web/symfony/libros/config/schema.yml

>>

file+

/home/jesaavedra/aplic_web/symfony/libros/config/databases.yml

....

 

>>

tokens

/home/jesaavedra/aplic_web/symfony/libros/config/propel.ini

>>

tokens

/home/jesaavedra/aplic_web/symfony/libros/config/propel.ini

>>

tokens

/home/jesaavedra/aplic_web/symfony/libros/config/config.php

>>

chmod

777

/home/jesaavedra/aplic_web/symfony/libros/cache

>>

chmod

777

/home/jesaavedra/aplic_web/symfony/libros/log

.....

 
1. Creaci´on de un proyecto Instrucci´on symfony init-project libros Detalles del proyecto >> dir+ /home/jesaavedra/aplic_web/symfony/libros/batch >>

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

2. Creaci´on de la aplicaci´on

Instrucci´on

symfony

init-app

libros

Detalles de la aplicac’on

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/apps/libros/config

>>

file+

/home/jesaavedra/aplic_web/symf

...

apps/libros/config/security.yml

>>

file+

/home/jesaavedra/aplic_web/symf

bros/apps/libros/config/app.yml

>>

file+

/home/jesaavedra/aplic_web/symf

...

os/apps/libros/config/cache.yml

>>

file+

/home/jesaavedra/aplic_web/symf

ros/apps/libros/config/i18n.yml

>>

file+

/home/jesaavedra/aplic_web/symf

pps/libros/config/factories.yml

>>

file+

/home/jesaavedra/aplic_web/symf

...

/apps/libros/config/routing.yml

>>

file+

/home/jesaavedra/aplic_web/symf

...

s/apps/libros/config/config.php

>>

file+

/home/jesaavedra/aplic_web/symf

...

apps/libros/config/settings.yml

.....

 

>>

tokens

/home/jesaavedra/aplic_web/symf

...

apps/libros/config/settings.yml

>>

file+

/home/jesaavedra/aplic_web/symfony/libros/web/index.php

>>

file+

/home/jesaavedra/aplic_web/symfony/libros/web/libros_dev.php

>>

tokens

/home/jesaavedra/aplic_web/symfony/libros/web/index.php

>>

tokens

/home/jesaavedra/aplic_web/symfony/libros/web/libros_dev.php

>>

chmod

777

/home/jesaavedra/aplic_web/symfony/libros/cache

>>

chmod

777

/home/jesaavedra/aplic_web/symfony/libros/log

>>

chmod

777

/home/jesaavedra/aplic_web/symfony/libros/web/uploads

>>

chmod

777

/home/jesaavedra/aplic_web/symfony/libros/symfony

>>

chmod

777

web/uploads/assets

>>

dir+

/home/jesaavedra/aplic_web/symfony/libros/test/functional/libros

2. Creaci´on de la aplicaci´on Instrucci´on symfony init-app libros Detalles de la aplicac’on >> dir+ /home/jesaavedra/aplic_web/symfony/libros/apps/libros/config

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

3. Crear el c´odigo del modelo de datos

Editar el archivo libros/config/schema.yml

Detalles del modelo

---

propel:

cliente:

_attributes:

{

phpName:

Cliente

}

idMethod:

native

id:

type:

INTEGER

 

required:

true

autoIncrement:

true

primaryKey:

true

paterno:

type:

VARCHAR

 

size:

25

materno:

type:

VARCHAR

 

size:

25

nombre:

type:

VARCHAR

 

size:

25

ci:

type:

VARCHAR

 

size:

10

direccion:

 

type:

VARCHAR

 

size:

75

.......... Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

3. Crear el c´odigo del modelo de datos Editar el archivo libros/config/schema.yml Detalles del modelo ---

4. Generar el modelo de datos

Instrucci´on

symfony

propel-build-model

Detalles de la generaci´on del modelo

[propel-om]

Target

database

type:

mysql

[propel-om]

Target

package:

lib.model

[propel-om]

Using

template

path:

/usr/share/php/symfony/vendor/propel-generator/templates

[propel-om]

Output

directory:

/home/jesaavedra/aplic_web/symfony/libros

[propel-om]

Processing:

generated-schema.xml

 

[propel-om]

Processing

Datamodel

:

JoinedDataModel

[propel-om]

-

processing

database

:

propel

[propel-om]

+ cliente

 

[propel-om]

->

BaseClientePeer

[builder:

SfPeerBuilder]

[propel-om]

->

BaseCliente

[builder:

SfObjectBuilder]

[propel-om]

->

ClienteMapBuilder

[builder:

SfMapBuilderBuilder]

[propel-om]

->

ClientePeer

[builder:

SfExtensionPeerBuilder]

[propel-om]

->

Cliente

[builder:

SfExtensionObjectBuilder]

[propel-om]

+

libro

[propel-om]

->

BaseLibroPeer

[builder:

SfPeerBuilder]

[propel-om]

->

BaseLibro

[builder:

SfObjectBuilder]

[propel-om]

->

LibroMapBuilder

[builder:

SfMapBuilderBuilder]

[propel-om]

->

LibroPeer

[builder:

SfExtensionPeerBuilder]

[propel-om]

->

Libro

[builder:

SfExtensionObjectBuilder]

.....

4. Generar el modelo de datos Instrucci´on symfony propel-build-model Detalles de la generaci´on del modelo [propel-om]

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

5. Generando el SQL de creaci´on de la BD

Instrucci´on

symfony

propel-build-sql

 

Sal´ıda

 

......

propel

>

sql:

[echo]

+------------------------------------------+

 

[echo]

|

|

[echo]

|

Generating

SQL

for

YOUR

Propel

project!

|

[echo]

|

|

[echo]

+------------------------------------------+

 

[phingcall]

Calling

Buildfile

’/usr/share/php/symfony/vendor/propel-generator/build-propel.xml’

with

target

’sq

[property]

Loading

/usr/share/php/symfony/vendor/propel-generator/./default.properties

 

propel

>

sql-template:

 

[propel-sql]

Processing:

generated-schema.xml

 

[propel-sql]

Writing

to

SQL

file:

/home/jesaavedra/aplic_web/symfony/libros/data/sql/lib.model.schema.sql

 

[propel-sql]

 

+

cliente

[builder:

MysqlDDLBuilder]

 

[propel-sql]

+

compra

[builder:

MysqlDDLBuilder]

[propel-sql]

+

libro

[builder:

MysqlDDLBuilder]

[propel-sql]

+

pago

[builder:

MysqlDDLBuilder]

BUILD

FINISHED

 
5. Generando el SQL de creaci´on de la BD Instrucci´on symfony propel-build-sql Sal´ıda ...... propel >

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

6. Generando los CRUDs

Instrucci´on

symfony

propel-generate-crud

libros

cliente

Cliente

Sal´ıda

 

>>

dir+

/home/jesaavedra/aplic_web/symf

...

/libros/modules/cliente/actions

>>

file+

/home/jesaavedra/aplic_web/symf

...

iente/actions/actions.class.php

>>

dir+

/home/jesaavedra/aplic_web/symf

...

ibros/modules/cliente/templates

>>

file+

/home/jesaavedra/aplic_web/symf

...

iente/templates/editSuccess.php

>>

file+

/home/jesaavedra/aplic_web/symf

...

iente/templates/listSuccess.php

>>

file+

/home/jesaavedra/aplic_web/symf

...

iente/templates/showSuccess.php

>>

tokens

/home/jesaavedra/aplic_web/symf

...

iente/actions/actions.class.php

>>

tokens

/home/jesaavedra/aplic_web/symf

...

iente/actions/actions.class.php

>>

tokens

/home/jesaavedra/aplic_web/symf

...

iente/templates/editSuccess.php

>>

tokens

/home/jesaavedra/aplic_web/symf

...

iente/templates/listSuccess.php

>>

tokens

/home/jesaavedra/aplic_web/symf

...

iente/templates/showSuccess.php

>>

file+

/home/jesaavedra/aplic_web/symf

...

l/libros/clienteActionsTest.php

>>

tokens

/home/jesaavedra/aplic_web/symf

...

l/libros/clienteActionsTest.php

>>

file-

/home/jesaavedra/aplic_web/symf

...

iente/templates/showSuccess.php

>>

file-

/home/jesaavedra/aplic_web/symf

...

iente/templates/listSuccess.php

>>

file-

/home/jesaavedra/aplic_web/symf

...

iente/templates/editSuccess.php

>>

dir-

/home/jesaavedra/aplic_web/symf

bfb75802c/autoCliente/templates

>>

file-

/home/jesaavedra/aplic_web/symf

...

iente/actions/actions.class.php

>>

dir-

/home/jesaavedra/aplic_web/symf

...

f1bfb75802c/autoCliente/actions

>>

dir-

/home/jesaavedra/aplic_web/symf

...

eb341f72f1bfb75802c/autoCliente

6. Generando los CRUDs Instrucci´on symfony propel-generate-crud libros cliente Cliente Sal´ıda >> dir+ /home/jesaavedra/aplic_web/symf ... /libros/modules/cliente/actions

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Acceso al proyecto

Instrucci´on

http://libros

Acceso al proyecto Instrucci´on http://libros Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web -
Acceso al proyecto Instrucci´on http://libros Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web -

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Adecuaciones

Una vez generada gran parte del proyecto (forma muy general), se puede

proceder a realizar adecuaciones en:

Controlador (actions)

Vistas (templates)

Formas de acceso en las URL (routing)

Validacion de formularios

Efectos especiales

Adecuaciones Una vez generada gran parte del proyecto (forma muy general), se puede proceder a realizar

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Proyecto desplegado

Proyecto desplegado Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
Proyecto desplegado Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
Proyecto desplegado Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
Proyecto desplegado Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony
Proyecto desplegado Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Ejemplo de aplicacion desarrollada

Demostraci´on

Ejemplo de aplicacion desarrollada Demostraci´on Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web -

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Conclusiones

Symfony:

Tiene todo lo necesario para desarrollar aplicaciones Web

Soporta Ajax

Posee buena documentaci´on

Es multiplataforma

Esta en constante desarrollo (muchas funcionalidades en base plugins)

Al tener como aliado a las metodolog´ıas de desarrollo Ag´ıles (XP,

AD), se convierte en un fuerte candidatos para desarrollo de

aplicaciones web.

Conclusiones Symfony : Tiene todo lo necesario para desarrollar aplicaciones Web Soporta Ajax Posee buena documentaci´on

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Referencias

http://www.symfony-project.com

http://www.symfony.es

Referencias http://www.symfony-project.com http://www.symfony.es Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Preguntas

Preguntas

Preguntas, dudas, consultas, ...

Preguntas Preguntas Preguntas, dudas, consultas, ... Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Agradecimientos

Gracias ...

Agradecimientos Gracias ... Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony

Esteban Saavedra L´opez (Opentelematics) Frameworks MVC para el Desarrollo Web - Symfony