Mayo 05, 2014
enzo
Hoy vengo a hablarles de Silex Micro Framework, creado por Fabien Potencier e Igor Wiedler.
Como su nombre lo indica Silex es un pedernal negro de gran dureza utilizado para la creación de las primeras armas primitivas; pues Silex en un micro framework que utiliza componentes de Symfony permitiéndole heredar las buenas practicas y profesionalismo de Symfony pero manteniendo la agilidad que da una aplicación sencilla de PHP.
La idea de Silex no es competir con Symfony en términos de potencia y funcionalidad con Symfony, pero Symfony nunca sera tan ágil como Silex.
Silex no esta orientado para aplicaciones web de gran envergadura o las que hagan un uso muy intensivo de bases de datos, debido a que aun no soporta oficialmente ningún ORM. Sin embargo, Silex gana claramente a Symfony2 en las aplicaciones pequeñas.
Este micro framework es la herramienta perfecta e intermedia para dar el salto a symfony ya que se pueden entender y practicar los conceptos de los principales componentes de Symfony. Además permite dar el salto de un estilo de programación orientada a objetos muy al estilo de PHP4 pero que aun se sigue usando en PHP5 a un estilo de programación orientada a objetos de uso extensivo en Symfony y otros frameworks de última generación.
En resumen para proyectos de mediana y baja complejidad en los que tenemos la libertad de escoger en que herramienta podemos realizarlo, Silex nos permitiría entregar un proyecto Bien Hecho, Barato y Entregado a Tiempo. Además de que el proyecto tendrá un desempeño envidiable.
- Instalar Composer.
Si no tienen aun composer pueden ver una guía de instalación en español multi plataforma en http://symfony.es/documentacion/guia-de-instalacion-de-composer/
Es común que se tenga una copia de composer dentro del proyecto como composer.phar . Yo recomiendo instalarlo como un comando multi usuario que este disponible para todos los proyectos, en mac yo lo hago por medio de Homebrew con el comando:
$ brew install josegonzalez/php/composer
- Como instalar Silex.
Silex se puede descargar desde fuentes disponible en http://silex.sensiolabs.org/download, aunque la forma mas recomendada es por medio de composer.
Cuando ya tenemos composer instalado y disponible; debemos crear un directorio vacío para nuestra aplicación y dentro de este directorio crear un archivo composer.json con el siguiente contenido.
{
"require": {
"silex/silex": "~1.2"
}
}
Para descargarlo debemos ejecutar el comando de composer.
$ composer install
$ composer.phar install
Debes escoger el comando que se ajuste a tu ambiente, el install leerá el archivo composer.json y atendera la solicitud de instalar la libreria Silex que en nuestro caso es nuestro micro framework trayendo la version 1.2 o superior.
Las librerías serán buscadas en el repositorio https://packagist.org
Al final tendrás todo lo necesario para arrancar con Silex y todas las librerías estarán en un folder llamado vendor y tu aplicación deberá estar dentro del folder web e iniciando con un archivo llamado index.php donde estara tu aplicación.
Si este inicio de parece muy escueto y necesitas un poco de mas estructura te recomiendo instalar el Skeleton App para Silex creado por Fabien Potencier https://github.com/silexphp/Silex-Skeleton el cual podrás instalar con el siguiente comando.
$ composer create-project fabpot/silex-skeleton silex_skell --stability=dev
Al finalizar tendremos una estructura parecida a la siguiente.
├── LICENSE
├── bin
├── composer.json
├── composer.lock
├── config
├── phpunit.xml.dist
├── src
├── templates
├── var
├── vendor
└── web
La lista de componentes de Symfony que están presentes en Symfony son
- Debug
- Event Dispatcher
- HTTP Foundation
- HTTP Kernel
- Routing
- Yaml
Además Silex implementa los siguientes Services Providers
- Twig
- URL Generator
- Session
- Validator
- Form
- HTTP Cache
- HTTP Fragments
- Security
- Remember Me
- Swiftmailer
- Monolog
- Translation
- Serializer
- Doctrine
- Controllers as Services
Para mas información acerca de Silex la documentación oficial http://silex.sensiolabs.org/documentation
También podemos ir agregando otras librerías para realizar las implementaciones que deseemos.
- Ejecutar Silex
Como ya he mencionado anteriormente nuestras aplicaciones Silex estarán en el directorio web y así separar las librerías fuera del directorio accesible via web.
Una aplicación Silex recibe en un solo archivo en este caso index.php que controlara todo el proceso de Modelo, Vista , Controlador es decir conexión a base de datos, renderizado y ruteo.
Si deseamos podemos tener tanto archivos como aplicaciones deseemos.
En producción solo debemos apuntar el Document Root de nuestro servidor a la carpeta web. Pero en ambiente de desarrollo podemos hacer uso de la característica Built-in web server de PHP 5.4+ con el siguiente comando.
$ php -S localhost:8000
En el comando anterior se debe ejecutar dentro del folder web y podemos escoger cualquier puerto que este libre en nuestro ambiente de desarrollo.
Espero que haya sido de su agrado.