-
Notifications
You must be signed in to change notification settings - Fork 28
Desarrollando y adaptando el programa a las necesidades de nuestra institució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)
[Nos vemos mañana!](#Nos vemos mañana!)
## IntroducciónEn 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 RetoCada 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 diferenteRecuerdas 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 ProyectoEl 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 requisitosPrimero 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.
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.
## La Ruta de SymfonySi no sabes nada acerca de XSS o CSRF, date un tiempo para aprender más de estas vulnerabilidades de seguridad.
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 EntornosSi 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:
## GithubCon 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.
## Nos vemos mañana!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!
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.