Skip to content
This repository has been archived by the owner on Aug 3, 2022. It is now read-only.

Desarrollando y adaptando el programa a las necesidades de nuestra institución

jordilopezamat edited this page Dec 12, 2012 · 23 revisions
Tabla de Contenidos

Introducción

[El Reto](#El Reto)

[Este tutorial es diferente](#Este tutorial es diferente)

[El Proyecto](#El Proyecto)

[¿Que hacemos hoy?](#¿Que hacemos hoy?)

[Pre requisitos](#Pre requisitos)

[La Ruta de Symfony](#La Ruta de Symfony)

[Los Entornos](#Los Entornos)

Github

[Nos vemos mañana!](#Nos vemos mañana!)

## Introducción

En esta sección de la wiki-Manual de ALBA aprenderemos juntos a desarrollar y adaptar el programa a las necesidades de nuestra institución. La potencia del Proyecto ALBA radica en que tanto si detectamos en la aplicación un malfuncionamiento o vemos que alguna funcionalidad nueva o modificada se adapta mejor a las necesidades de gestión del día a día de nuestra institución, tenemos la libertad de corregir o adaptar el código fuente de ALBA como mejor nos parezca.

Así pues, todos somos co-desarrolladores de ALBA. Esos son nuestros derechos como miembros de la comunidad de usuarios de software libre .

No hay ejercicio del derecho que no colleve una responsabilidad. En el caso del software libre, como es conocido, nuestra responsabilidad es compartir con el resto de la comunidad las mejoras y cambios realizadas,

aportando nuestro granito de arena al arenero del cuál todos nos beneficiamos

Este tutorial es el fruto de las interacciones entre miembros de la comunidad ALBA, día a día desarrollando y adaptando el programa a las necesidades de la institución educativa con la que colaboremos.

## El Reto

Cada capítulo/día está pensado para tener una duración entorno a una hora, y será la ocasión para aprender Symfony+ALBA programando un sitio web real, desde el inicio hasta el final.

Cada día iremos agregando nuevos cambios y funcionalidades a la apliación, y sacaremos partido de este desarrollo para introducirnos en las nuevas funcionalidades de ALBA, así como buenas prácticas en el desarrollo web symfony+ALBA.

## Este tutorial es diferente

Recuerdas los inicios de PHP4 !? PHP fue de los primeros lenguajes de programación dedicados a la web y uno de los más sencillos de aprender.

Pero a medida que las tecnologías web evolucionan, los desarrolladores web necesitan mantenerse al día con las mejores prácticas y herramientas. El mejor modo de aprender es por supuesto leyendo blogs, tutoriales y libros. Nosotros hemos leído muchos de ellos, y muchos de ellos se quedan cortos cuando el autor empieza a proporcionar fragmentos de código como ejemplos.

Estarás probablemente acostumbrado a leer avisos del tipo :

"Para una aplicación real, no olvides añadir validación y el correspondiente manejo de errores."

o

"La seguridad se deja como ejercicio a realizar por el lector por su cuenta."

Cómo? Estos son asuntos serios. Quizás sean la parte más importante de cualquier fragmento de código. Y como lector, uno es abandonado a su suerte. Si tener en cuenta estas cuenta estas cuestiones, los ejemplos resultan mucho menos útiles. No puedes usarlos como un buen punto de partida ! A causa de las carencias en seguridad, código de validación, manejo de errores y testeo, simplemente por mencionar algunos.

En este tutorial, no vas a ver nunca afirmaciones de ese tipo, ya que vamos a escribir tests, gestión de errores, código de validación, y puedes tener por seguro que vamos a desarrollar una aplicación segura. Eso es debido a que Symfony es código, pero es también las mejores prácticas y como desarrollar aplicaciones profesionales. Podemos darnos ese lujo porque Symfony provee todas las herramientas necesarias para codificar estos aspectos de forma sencilla sin tener que escribir mucho código.

Validación, gestión de errores, seguridad y tests son prioridades en Symfony, así pues no nos va a tomar mucho tiempo explicar dichos conceptos. Ese es uno de los motivos principales por lo que usar un "framework" de desarrollo para proyectos reales como el Proyecto ALBA.

Todo el código que vas a leer en este tutorial es código que puedes usar en tu proyecto particular. Te animamos a copiar y pegar fragmentos de código, así como páginas enteras de él.

## El Proyecto

El objetivo es demostrar como podemos usar Symfony para desarrollar aplicaciones profesionales como ALBA, elegantes y con poco esfuerzo.

Vamos a mantener en secreto los detalles del Proyecto un día más, ya que ya tenemos suficiente para hacer hoy. Sin embargo, ya sabes el nombre hoy : Albartida.

## ¿Que hacemos hoy?

Como más adelante ya tendremos oportunidades de sobras para desarrollar una aplicación con Symfony, hoy no vamos a escribir código PHP. Pero incluso sin escribir una sola linea de código vas a entender los beneficios de utilizar un framework como Symfony simplemente al configurar un nuevo proyecto.

El objetivo del día es configurar un entorno de desarrollo y mostrar una página web de la aplicación en el navegador web. Esto incluye la instalación de Symfony, la creación de una aplicación y la configuración del servidor web.

## Pre requisitos

Primero que nada, asegúrate de que cuentas con un entorno de desarrollo web funcionando: un servidor web (Apache por ejemplo), un motor de bases de datos (MySQL, PostgreSQL, o SQLite), y PHP 5.2.4 o superior.

Como utilizaremos la línea de comandos constantemente, es preferible utilizar un sistema operativo tipo Unix, si utilizas Windows, va a funcionar de todas formas, simplemente vas a tener que ingresar comandos en la consola cmd .

Como este tutorial se concentra en el framework Symfony, asumimos que ya cuentas con un conocimiento sólido de PHP 5 y de Programación Orientada a Objetos.

Así pues seguiremos paso a paso, de forma sencilla, el proceso de instalación de ALBA en nuestro servidor de prueba

Al finalizar el proceso de instalación, deberíamos ser capaces de ver el siguiente árbol de directorios en la carpeta web de nuestro servidor.

La tarea generate:project completada de forma automática por el proceso de instalación genera por defecto la estructura de directorios y archivos necesarios para un proyecto symfony, en este caso el proyecto ALBA:

Figura c1. Árbol de directorios y sus contenidos

Directorio Descripción
apps/ Hospeda todas las aplicaciones del proyecto
cache/ Los archivos en caché
config/ Los archivos de configuración del proyecto
data/ Los archivos de datos, de ejemplo y .sql
debian/ Los archivos del instalador Debian (en proyecto)
lib/ Las bibliotecas y clases del proyecto
log/ Los archivos de registro
plugins/ Los plugins instalados
test/ Los archivos de pruebas unitarias y funcionales
web/ El directorio raíz web (véase más adelante)

¿Por qué Symfony genera tantos archivos? Uno de los principales beneficios de la utilización de un completo framework es normalizar tus desarrollos. Gracias a estructura predeterminada de archivos y directorios de Symfony, cualquier desarrollador con algunos conocimientos de Symfony puede asumir el mantenimiento de cualquier proyecto symfony. En cuestión de minutos, será capaz de bucear en el código, corregir los errores, y añadir nuevas funciones.

También durante el proceso de instalación, de forma automática, la tarea generate:app crea por defecto la estructura necesaria de directorios para una aplicación bajo el directorio apps/principal :

Directorio Descripción
config/ Los archivos de configuración de la aplicación
lib/ Las bibliotecas y clases de la aplicación
modules/ El código de la aplicación (MVC)
apps/ Hospeda todas las aplicaciones del proyecto
templates/ La plantilla global

Todos los comandos symfony debe ser ejecutados en el directorio raíz del proyecto a menos que se diga expresamente otra cosa.

Al llamar a la tarea generate:app , también hemos pasado dos opciones relacionadas con la seguridad:

--escaping-strategy : Permite escapar la salida para evitar ataques XSS

--csrf-secret : Permite tokens de sesión en los formularios para prevenir los ataques CSRF

Pasando estas dos opciones a la tarea, hemos asegurado nuestro futuro desarrollo de las dos vulnerabilidades más extendidas se encuentran en la web. Así es, Symfony automáticamente toma las medidas de seguridad por nosotros.

Si no sabes nada acerca de XSS o CSRF, date un tiempo para aprender más de estas vulnerabilidades de seguridad.

## La Ruta de Symfony

Puede obtener la versión utilizada de Symfony por su proyecto escribiendo:

$ php symfony -V

La opción -V también muestra la ruta de acceso al directorio de instalación de Symfony, se almacena en config/ProjectConfiguration.class.php:

// config/ProjectConfiguration.class.php
require_once '/Users/fabien/work/symfony/dev/1.2/lib/autoload/sfCoreAutoload.class.php';

Para mejorar la portabilidad, cambia la ruta absoluta a la instalación de Symfony por una relativa:

// config/ProjectConfiguration.class.php
require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';

De esta manera, puedes mover el directorio del proyecto ALBA a cualquier lugar de tu máquina u a otra, y éste funcionará.

## Los Entornos

Si revisas el directorio web/ , encontrarás dos archivos PHP: index.php y principal_dev.php . Estos archivos son llamados controladores frontales: todas las peticiones a la aplicación se hacen a través de ellos. Pero, ¿por qué tenemos dos controladores frontales si hemos definido sólo una aplicación?

Ambos archivos apuntan a la misma aplicación pero para distintos entornos. Cuando desarrollas una aplicación, excepto si desarrollas directamente en el servidor de producción, necesitas varios entornos:

*El entorno de desarrollo: Este es el ambiente utilizado por desarrolladores web para añadir nuevas funciones, corregir los errores, ... *El entorno de prueba: Este entorno se utiliza para probar automáticamente la aplicación. *El entorno de producción: Este es el entorno donde un usuario final interactúa.

¿Qué hace que un entorno sea único? En el entorno de desarrollo, la aplicación necesita registrar todos los detalles de una petición para facilitar la depuración, debe mostrar la excepción en el navegador, pero la cache debe ser deshabilitada para que todos los cambios realizados al código se tengan en cuenta de inmediato. El entorno de desarrollo debe ser optimizado para el desarrollador:

## Github

Con este comando que utilizamos durante el proceso de instalación clonamos en nuestro servidor el código con la última versión de ALBA,

$ sudo git clone git://github.com/proyectoalba/alba.git alba

Es una buena práctica utilizar control de versiones de código fuente en el desarrollo de una aplicación web. Usar el control de versiones de código fuente nos permitirá, a lo largo de nuestro proyecto de desarrollo y adaptación del software a nuestras necesidades :

*trabajar con confianza *volver a una versión anterior si un cambio rompe algo *permitir a más de una persona para trabajar eficientemente en el proyecto *tener acceso a todas las versiones sucesivas de la aplicación

&&En construcción (En esta sección, vamos a describir cómo utilizar Github con Symfony) Suponemos que ya tienes acceso a un servidor Github.

Si no tienes aún una cuenta en el servidor de Github a tu disposición, puedes crear una gratis simplemente al escribir "free github repository" en Google para obtenerla de forma sencilla!

## Nos vemos mañana!

Bien, ¡el tiempo terminó por hoy! Incluso si aún no hemos comenzado a hablar de Symfony, hemos configurado un entorno de desarrollo sólido, hemos hablado de las mejores prácticas sobre desarrollo web, y estamos listos para iniciar la programación.

Mañana, vamos a revelar lo que hará la aplicación y conversar sobre los requisitos que necesitamos poner en práctica durante el tutorial.

Clone this wiki locally