- Para desarrollar una aplicación bajo el patrón de diseño MVC es necesario una mayor dedicación en los tiempos iniciales del desarrollo.
- La separación de conceptos en capas agrega complejidad al sistema.
- La curva de aprendizaje del patrón de diseño es más alta usando otros modelos más sencillos.
- La distribución de componentes obliga a crear y mantener un mayor número de ficheros.
Grupo
Autores del Blog:
Armando Matos
Giorys Gonzalez
Wilmer Hernadez
Armando Matos
Giorys Gonzalez
Wilmer Hernadez
lunes, 22 de junio de 2015
Desventajas MVC
Las desventajas mas significativas que se pueden encontrar están
Ventajas MVC
Dentro de las ventajas mas importantes de utilizar un MVC se encuentran:
- Clara separación entre interfaz, lógica de negocio y de presentación.
- Reutilización de los componentes.
- Facilidad para desarrollar prototipos rápidos.
- Los desarrollos suelen ser más escalables.
Mi primer proyecto con Symfony
Luego de ver que es Symfony e instalarlo, colocaremos los pasos para crear un proyecto con Symfony.
Antes que nada, es imporatante entender como estructura Symfony el código. Todo proyecto creado por Symfony consta de una serie de carpetas y archivos que contienen el código base del framework. El árbol de carpetas de un proyecto es:
Los proyectos se encuentran divididos en aplicaciones y módulos, los cuales, suelen coincidir con las tablas de nuestra base de datos. En este primer proyecto, haremos un blog muy simple y le pondremos el nombre blog (para ser original), a su vez, estará formado por dos aplicaciones, el frontend (o la parte visible para los usuarios comunes) y el backend (el panel de administración). Por último, cada una de las aplicaciones tendrá dos modulos: post y comment:
Base de datos del proyecto
Para la base de datos de este primer proyecto, crearemos un modelo muy simple que constará de una tabla de posts y una tabla de comentarios con una relación 1:n, puesto que un post puede tener n comentarios.
Creando el proyecto
Una vez tenemos clara la definición de la base de datos, las aplicaciones y los módulos del proyecto, podemos empezar a dar forma a nuestro código.
Antes que nada, es imporatante entender como estructura Symfony el código. Todo proyecto creado por Symfony consta de una serie de carpetas y archivos que contienen el código base del framework. El árbol de carpetas de un proyecto es:
Base de datos del proyecto
Para la base de datos de este primer proyecto, crearemos un modelo muy simple que constará de una tabla de posts y una tabla de comentarios con una relación 1:n, puesto que un post puede tener n comentarios.
Creando el proyecto
Una vez tenemos clara la definición de la base de datos, las aplicaciones y los módulos del proyecto, podemos empezar a dar forma a nuestro código.
- El primer paso será crear mediante el script que nos
proporciona Symfony, un proyecto vacío, para ello, creamos una carpeta
blog en, por ejemplo, /var/www/ y ejecutamos symfony generate:project
<project>:
mkdir -p /var/www/blog/ cd /var/www/blog/
symfony generate:project blog
Esto nos habrá creado todo el árbol de directorios y archivos necesarios para poner en marcha nuestra web con este framework.
NOTA!! Dependiendo del sistema operativo y de la instalación realizada, puede ser necesario utilizar el prefijo php antes de cada comando symfony (por ejemplo: > php symfony new blog).
- Ahora, le pediremos a Symfony que nos genere las dos aplicaciones definidas anteriormente: frontend y backend
symfony generate:app --escaping-strategy=on --csrf-secret=UniqueSecret frontend symfony generate:app --escaping-strategy=on --csrf-secret=UniqueSecret backend
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 CSR
- El siguiente paso, será conectar nuestra aplicación con la base de datos, para ello, Symfony dispone de un archivo de configuración /var/www/blog/config/databases.yml en el que le indicaremos donde está localizada, a que base de datos y con que usuario y contraseña lo deberá hacer.Para este caso, daremos por hecho que la base de datos es MySQL, se encuentra en la máquina local y que estará codificada en utf8. Abrimos el archivo y modificamos los valores que pongo en negrita:
all:
propel:
class: sfPropelDatabase
param:
classname: PropelPDO
dsn: mysql:dbname=DB-NAME;host=localhost
username: DB-USER
password: DB-PASSWORD
encoding: utf8
persistent: true
pooling: true
Con esto, ya tenemos configurado nuestro proyecto con la base de datos!!
- Una vez definida la conexión con la base de datos, creamos en el archivo /var/www/blog/config/schema.yml el esquema de la base de datos que representa el modelo de datos del proyecto:
propel:
post:
_attributes: { phpName: Post }
id:
title: varchar(255)
excerpt: longvarchar
body: longvarchar
created_at:
updated_at:
comment:
_attributes: { phpName: Comment }
id:
post_id:
author: varchar(255)
email: varchar(255)
body: longvarchar
created_at:
updated_at:
Symfony, permite insertar una serie de opciones o atributos en su esquema de la base de datos, como por ejemplo phpName, que indica el nombre de la clase PHP utilizada para manejar cada tabla, además de ser capaz de deducir información del typo de campo a partir del nombre de la columna. Si por ejemplo una columna se llama id, salvo que se le indique lo contrario, Symfony supone que es la clave primaria de la tabla y, por tanto, que es de tipo entero, que no puede tomar valores null y que su valor se autoincrementa.
- Ahora que tenemos definido el esquema, ejecutamos el comando propel:build-model para generar en la carpeta /var/www/blog/lib/model las clases que se encargan de manejar la base de datos
symfony propel:build-model
NOTA!! Si en este punto, aparece un error “Could not perform XLST transformation. Make sure PHP has been compiled/configured to support XSLT.” es debido a que no tienes instalada la extensión xsl para PHP. Desde Ubuntu puedes instalarla con sudo apt-get instal php5-xsl
- Ya estamos listos para decirle a symfony que nos genere el script de creación de base de datos y lanzarlo: symfony propel:build-sql mysql -u DB-USER -p DB-NAME < /var/www/blog/data/sql/lib.model.schema.sql
Nota!! Si antes de empezar el proyecto Symfony ya dispones de una base de datos, puedes hacer el trabajo inverso: generar el esquema y las clases PHP a partir de una base de datos existente.
- Nos vamos a nuestro navegador y visitamos la dirección http://localhost/blog/,si todo ha ido bien, deberíamos estar viendo una página similar a esta:
Framework para PHP
Un framework, es una estructura de soporte definido, mediante la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado para ayudar a desarrollar y unir los diferentes componentes de un proyecto.
Son diseñados con la intención de facilitar el desarrollo de software, permitiendo a los diseñadores y programadores pasar más tiempo identificando requerimientos de software que tratando con los tediosos detalles de bajo nivel para proveer un sistema funcional, entre otras muchas cosas, nos ofrecen la posibilidad de usar formularios, acceso a bases de datos, envíos de mail, etc. sin necesidad de tener que programarlos desde cero.
En sentido general se puede decir que los framework ofrecen una infraestructura que permite a los desarrolladores tener un código más ordenado, limpio y fácil de actualizar.
Algunos de los Frameworks más populares.
Existen numerosos frameworks para php, y muy frecuentemente, resulta difícil decidir cuál de todos ellos funciona mejor o es capaz de adaptarse más a las particularidades y requerimientos propios del proyecto que se pretende llevar a cabo, sobre todo, porque cada uno ofrece una amplia gama de funcionalidades que adicionan gran versatilidad a las aplicaciones.
A continuación se muestra un pequeño conjunto de Frameworks y se realiza una revisión breve de algunas de sus características principales, ventajas y desventajas, en aras de cumplimentar el objeto de investigación de este trabajo, que es precisamente, ofrecer una panorámica general del tema, para dejar a la comunidad de desarrolladores la responsabilidad de profundizar y realizar la elección del Framework que consideren más adecuado. Algunos de los más populares son:
Son diseñados con la intención de facilitar el desarrollo de software, permitiendo a los diseñadores y programadores pasar más tiempo identificando requerimientos de software que tratando con los tediosos detalles de bajo nivel para proveer un sistema funcional, entre otras muchas cosas, nos ofrecen la posibilidad de usar formularios, acceso a bases de datos, envíos de mail, etc. sin necesidad de tener que programarlos desde cero.
En sentido general se puede decir que los framework ofrecen una infraestructura que permite a los desarrolladores tener un código más ordenado, limpio y fácil de actualizar.
Algunos de los Frameworks más populares.
Existen numerosos frameworks para php, y muy frecuentemente, resulta difícil decidir cuál de todos ellos funciona mejor o es capaz de adaptarse más a las particularidades y requerimientos propios del proyecto que se pretende llevar a cabo, sobre todo, porque cada uno ofrece una amplia gama de funcionalidades que adicionan gran versatilidad a las aplicaciones.
A continuación se muestra un pequeño conjunto de Frameworks y se realiza una revisión breve de algunas de sus características principales, ventajas y desventajas, en aras de cumplimentar el objeto de investigación de este trabajo, que es precisamente, ofrecer una panorámica general del tema, para dejar a la comunidad de desarrolladores la responsabilidad de profundizar y realizar la elección del Framework que consideren más adecuado. Algunos de los más populares son:
- El Zend Frameworks es simple, no necesita instalación especial y requiere PHP 5. http://www.zend.com/
- CodeIgniter es un buen framework, utilizado por una gran comunidad de usuarios. Construido para codificadores PHP que necesitan una herramienta de desarrollo fácil para crear aplicaciones web simples y elegantes. http://www.codeigniter.com/
- CakePHP es un framework para php que nos permite programar más rápido evitándonos escribir código tedioso de tareas muy comunes. http://cakephp.org/
- El Seagull, nos permite realizar una programación modular, posee un Sistema de Gestión de Contenidos (CMS). Entre sus características de encuentran su compatibilidad con PHP 4 y PHP 5, ORM integrado, incorpora el patrón MVC, uso de templates, soporte para múltiples bases de datos, validación de datos, alto nivel de configuración, autentificación, integración de librerías PEAR. http://sourceforge.net/projects/seagull/
- Prado está basado en componentes eventos con el objetivo de acelerar el desarrollo de aplicaciones web usando PHP 5. El concepto del desarrollo de aplicaciones en Prado es diferente, se utilizan componentes, eventos y propiedades en vez de procedimientos, URL y parámetros. http://www.pradosoft.com/
- Zoop es un Framework PHP Orientado a Objeto basado en el modelo MVC, sus desarrolladores lo caracterizan por ser rápido, eficiente y fácil destinado para programadores. http://phpframeworks.com/php-frameworks/index.php?id=7
- WACT facilita un aprovechamiento modular, sus componentes permiten la integración con otras aplicaciones web. Implementa el patrón MVC. La versión actual de WACT requiere PHP 5, por ahora solo está disponible desde Subversión. http://www.phpwact.org/
- Symfony está desarrollado en PHP5, se puede utilizar en plataformas *nix (Unix, Linux) y Windows. Requiere de una instalación, configuración y líneas de comando, incorpora el patrón MVC, soporta AJAX, plantillas y un gran número de bases de datos. Es un Framework similar a CodeIgniter de desarrollo rápido. Es una estructura de librerías y clases para programar aplicaciones web. Su base es el Framework de Ruby on Rails. https://symfony.com/
Suscribirse a:
Entradas (Atom)