944 063 154

Blog

Etiqueta: Symfony

Symfony 4.0: “su mejor versión”

Publicado enDesarrollo y Programación en diciembre 13, 2017 10:00 am

Symfony, el framework más completo para el desarrollo de todo tipo de aplicaciones web, lanza “su mejor versión”: Symfony 4.0. El proyecto, que fue lanzado hace más de 12 años para la creación de aplicaciones de Sensio programadas en PHP, fue liberado bajo una licencia opensource. Además, desde 2018 Symfony se ha convertido en una empresa independiente ajena a SensioLabs que presenta su versión 4.0 gracias a la colaboración de la comunidad.

Novedades Symfony

Symfony 4.0 es el resultado de la modernización y adaptación del framework a las nuevas necesidades; manteniendo los conceptos de Symfony pero con una implementación mejor. Algunas de las ‘ideas Symfony’ tradicionales se han sustituido por otras más acordes con los estándares de la industria del software libre. Todo ello ha dado como resultado una versión que ofrece mejores resultados con menos trabajo. La versión 4.0 de Symfony requiere de un menor aprendizaje al ser mucho más intuitivo y sencillo de configurar. Así, las horas de programación de la aplicación se reducen para que puedas emplear en otras tareas el tiempo dedicado a Symfony.

Entre las principales novedades que trae Symfony 4.0 destacan tres que simplifican la generación de código en el desarrollo de una aplicación y la automatización de algunas de las tareas de la programación con Symfony.

Symfony Flex

La nueva forma de instalar y gestionar componentes en aplicaciones desarrolladas con Symfony. Esta herramienta hace que instalar o eliminar dependencias sea mucho más sencillo. Con Symfony 4.0 no será necesario buscar en GitHub cómo instalar bundles, componentes, librerías o cómo activarlas en el kernel de la aplicación. El plugin Symfony Flex se encarga de automatizar ese tipo de tareas a la hora de programar aplicaciones con Symfony.

Symfony Flex permite instalar y configurar componentes automáticamente a través de recetas. El propio plugin ofrecerá la opción de ejecutar esa configuración automática si detecta una receta en el componente que se quiere instalar. Además, se evita la aplicación de una misma receta más de una vez y se han eliminado los archivos Makefile; que se han sustituido por Symfony Console. Asimismo, con Symfony4 los bundles se registran de forma automática.

Symfony Make Bundle

Este bundle sustituye a un popular SensioGeneratorBundle, que se estaba quedando obsoleto. El nuevo SymfonyMakerBundle se encarga de crear el código inicial (boilerplate code) necesario para la consola, los controladores o los formularios. De esta manera, eliminar el código inicial de la aplicación es más fácil que generarlo; de forma que el código nuevo se genere con un bundle más moderno, más sencillo y, sobre todo, mucho más ligero.

SymfonyMakerBundle deja atrás el uso del prefijo generate para implementar makers. Aunque por el momento solo están disponibles algunos comandos simples, Symfony irá añadiendo nuevos incluyendo makers interactivos.

Symfony 4, aún más sencillo

Para hacer que la programación de aplicaciones con Symfony sea más sencilla e intuitiva, los directorios se simplifican. Con Symfony 4 todos serán de primer nivel y no existirán jerarquías entre ellos al adoptar una estructura plana. Además, el tamaño de las aplicaciones se reducirá considerablemente.

A partir de ahora sólo se instalarán las dependencias necesarias para poder desarrollar la aplicación. Así se evita tener que instalar todos los bundles y componentes de Symfony. Esto supondrá una reducción del 70% del código y de los archivos que requiere una aplicación desarrollada con Symfony 3. La versión 4.0 facilita el desarrollo de todo tipo de aplicaciones; desde microservicios a backends para aplicaciones en JavaScript, mediante el uso de un micro-kernel.

Al mismo tiempo que se publicaba Symfony 4.0 salía una versión anterior del framework: Symfony 3.4. Una versión que cuenta con las mismas funcionalidades de la rama 3.x pero que es imprescindible para poder actualizar tus aplicaciones a Symfony 4.0. Symfony 3.4 ha sido lanzada en versión LTS por lo que tendrá soporte hasta noviembre de 2021.

Desarrollo con Symfony, Doctrine y MySQL Workbench

Publicado enDesarrollo y Programación

Desde hace ya unos cuantos años, en el desarrollo de aplicaciones web se tiende a utilizar herramientas que contribuyen no a que trabajemos más rápido, sino más ágil. Como es el caso de desarrollo con Symfony o Doctrine, entre otras.

Ya no tiene sentido contar con grandes equipos de desarrollo. De hecho, el nivel de productividad de un equipo formado por programadores y analistas suele verse afectado negativamente cuanta más cantidad de personas estén involucradas en el proyecto.

Normalmente las aplicaciones web conllevan un montón de tareas que son repetitivas o que pueden abstraerse o automatizarse. Conseguir reducir el tiempo que necesitamos invertir para realizar dichas tareas es clave para conseguir ser productivos.

Al igual que en otros lenguajes de programación como ruby, python o c#, en php disponemos de varios frameworks diseñados para conseguir reducir estas tareas. Además, ofreciéndonos una plataforma de calidad, compatible con TDD y centrada en ofrecernos arquitecturas REST. Todas ellas cosas claves en aplicaciones web.

De entre los frameworks más serios se encuentran Symfony y Zend Framework. Ambos de una calidad y documentación extraordinaria. Symfony tiene la ventaja de contar con una comunidad muy fuerte de desarrolladores en España. Además de casos de éxito tan rotundos como Yahoo Answers, Daily Motion y Delicious.

Además permite contar con un potente y seguro motor para desarrollar formularios, un sistema de enrutamiento muy avanzado fácilmente internacionalizable, una arquitectura extensible por diseño, y la posibilidad de usar módulos de otras plataformas con Zend Framework o los nuestros propios. Por si fuera poco, los creadores de symfony han desarrollado su propio orm llamado Doctrine. Una aplicación que podemos utilizar para atacar a cualquier base de datos cuyo cliente sea compatible con PDO de php.

Doctrine viene por defecto con Symfony, pero también podemos usar la genial alternativa Propel. Que personalmente nos permite hacer de forma mucho más elegante la i18n.

Como todo desarrollador con experiencia sabe, el crear el modelo de base de datos para nuestra aplicación y las clases que van a permitirnos operar con ellas, es la parte que probablemente conlleve más tareas automatizables o potencialmente abstraibles. Por ello, es muy importante el uso de un orm que nos automatice todo el trabajo.

Cabe destacar que para muchos programadores esto puede parecer un error; ya que a veces solemos preocuparnos demasiado pronto por temas de rendimiento cuando en realidad deberíamos preocuparnos por terminar unas cuantas fases previas… Que son las etapas que realmente nos van a permitir tener el proyecto online con calidad en un tiempo aceptable.

Desarrollo con Symfony. Creando el modelo

Como la mayoría de cosas en symfony, para crear nuestro modelo podemos hacerlo mediante un archivo de configuración yaml. Este archivo se llama schema.yml y se ubica en el directorio config/doctrine. Siendo relativo a todas las aplicaciones de nuestro proyecto symfony. La sintaxis es bastante comprensible y nos permite de una forma limpia y sencilla representar nuestro modelo de datos.


---
detect_relations: true
options:
  collate: utf8_general_ci
  charset: utf8
  type: InnoDB

User:
  columns:
    user_id:
      type: integer(4)
      primary: true
      notnull: true
      autoincrement: true
    name:
      type: string(45)
      notnull: true
    email:
      type: string(90)
      unique: true
      notnull: true
    bornDate:
      type: timestamp
      notnull: true
  options:
    charset: utf8
    collate: utf8_general_ci

Desarrollo con Symfony; segunda parte

Este archivo de configuración nos permite tener un esquema fácilmente mantenible. Y  permitirá a symfony automatizar las tareas de creación del código sql para crear la base de datos. Además de todas las clases php que usaremos para trabajar con la misma.


#creamos el código sql encargado de crear la base de datos
php symfony doctrine:build-sql

#creamos las clases php para trabajar con esta base de datos
php symfony doctrine:build-model

Esto nos ha ahorrado una cantidad increíble de tiempo, que tendríamos que haber invertido en tareas que en principio no son costosas en complejidad pero si en tiempo.

Vemos ahora cómo insertar un registro en la tabla que hemos creado, hacemos un select, un update y lo borramos.


//hacemos un insert en la base de datos
$user = new User();
$user-name = "Manolo";
$user-bord_date = date("d-m-Y",strtotime('1974-02-11'));
$user->save();

//hacemos un update
$user->name ="María";
$user->save();

//eliminamos el registro
$user->delete();

//hacemos un select
$q = Doctrine_Query::create()->select('u.name')->from('User u')->where("u.user_id = ? ") ;
$items = $q->execute(array(1));

foreach($items as $item){ echo $item->name;  }

Generando el schema.yml desde Mysql Workbench

Hasta ahora nuestro mayor trabajo a la hora de crear nuestro modelo, sin contar el tiempo que hemos invertido en pensar su diseño, ha sido crear el archivo schema.yml.
Esto también se puede automatizar mediante un plugin para mysql workbench que nos permitirá exportar nuestro diagrama e/r directamente a un archivo.yml.

desarrollo con synfony-mwb
Con nuestra tabla ahora podremos crear nuestro schema.yml desde el menú plugins/catalog. Pudiendo generar un archivo o directamente pegarlo en el portapapeles.

Hay que tener cuidado con este plugin ya que nos nombres de las clases del modelo, que represantan las tablas de nuestro modelo, las escribirá en minúsculas. Cuando por convención deberían empezar con la primera letra capitalizada.

Conclusión

Actualmente existen diferentes herramientas y técnicas que nos permiten ser muy productivos a la hora de desarrollar aplicaciones web. Como es el caso de Symfony y Doctrine.

Si quieres mantenerte informado de muchas más cosas además del desarrollo con Symfony o Doctrine, no dudes en visitar asiduamente nuestro blog tecnológico.

Acceder a la configuración de Symfony con sfConfig desde una tarea

Publicado enDesarrollo y Programación

En ocasiones es posible que, al crear una tarea que debería ejecutarse desde línea de comandos en una aplicación que ha sido escrita con Symfony, necesitemos tomar algunos valores concretos del archivo de configuración. De esta forma, y haciéndolo a través de sfConfig, evitaremos hardcodear el código interno y los problemas que ello conlleva. Para poder hacerlo, necesitaremos especificar el nombre de la aplicación de la que queremos leer el archivo de configuración. En el caso de que no lo indiquemos, Symfony no será capaz de buscar los valores en ningún archivo de configuración.

Los archivos de configuración tienen la misión de transformarse en código PHP; ya que la mayoría de las opciones que ofrecen únicamente pueden utilizarse por los frameworks del lenguaje de programación. Es compatible con esta forma de acceder a la configuración, por ejemplo, el framework Symfony. Sin embargo, algunas veces necesitamos poder acceder a esos archivos a través del código de la aplicación. Independientemente de que vaya a tener lugar dentro de una acción, en una determinada plantilla o en una clase propia. A todas ellas se puede acceder mediante la opción definida previamente en el archivo correspondiente (settings.yml, app.yml o module.yml); pero también podemos hacerlo utilizando una clase especial: la clase sfConfig.

Configurando con sfConfig

La clase sfConfig es una clase que permite el acceso a las opciones de configuración desde cualquier punto del código. Esto se debe a que se trata de un registro de configuración que facilita un método que puedes utilizar el cualquier parte del código. De esta manera haremos que el código sea más accesible y, sobre todo, sea más sencillo solucionar cualquier problema en el mismo.

Cuando, por ejemplo, queramos hacer que Symfony busque valores dentro del archivo de configuración podemos recurrir al parámetro –application. Este parámetro será el encargado de invocar la tarea que queremos ejecutar; así como de permitir que se muestre la información que necesitamos. Pero la principal ventaja de utilizar la tarea sfConfig es que, además, podremos hacerlo sin romper el código de la aplicación.


php symfony namespace:tarea --application=frontend

Como vemos, en ocasiones realizar modificaciones en el código de una aplicación es más fácil de lo que parece. Especialmente si tenemos en cuenta que evitamos que el código se rompa provocando que la aplicación deje de funcionar. Por ello, es recomendable dedicar un tiempo a conocer algunas clases de los lenguajes de programación y frameworks; el aprendizaje continuo es la mejor forma de mejorar nuestro código.