Slim Framework – Cómo poner en marcha tu primer proyecto paso a paso

Hace tiempo que conozco Slim y tenía interés en hacer alguna prueba para verificar que efectivamente es un micro framework ideal y fácil de poner en marcha para proyectos pequeños en los que no quieres complicarte. Sobre todo, si quieres poner en marcha un API pequeña y sencilla. Finalmente, encontré el caso de uso perfecto y me animé a probarlo. La curva de aprendizaje es muchísimo más pequeña que frameworks como Laravel o Symphony.

La documentación de éste framework está bastante bien, aunque quizá la guía de instalación no es del todo clara. El proyecto ha ido avanzando y sacando versiones que entre sí han cambiado mucho. Por ejemplo, en las primeras versiones, era mucho más viable trabajar sin depender de composer, pero en su versión v4 de Slim, lo mejor es que desistamos y trabajemos con éste controlador.

En este artículo, os pongo una guía de los pasos que he seguido para una fácil y rápida instalación de Slim PHP. Vamos a ello.

Doy por hecho, que ya sabemos y hemos instalado composer en nuestro sistema. Comenzamos creando la carpeta donde vamos a instalar e implementar nuestro proyecto.

mkdir -p /var/www/html/miapp/
cd /var/www/html/miapp/

En este punto, estamos ya en la carpeta del proyecto y mediante composer, instalamos Slim Framework. El siguiente comando nos instalará todas la dependencias en una carpeta Slim dentro de nuestro proyecto.

composer require slim/slim:"4.*"

En la guía de instalación de Slim, además, vemos que hay una dependencia que el comando anterior no ha instalado. Un servidor de enrutamiento. Nosotros elegimos la primera opción de la guía, con instalar una es suficiente (he visto diferentes guías donde se instalan todos, por desconocimiento).

composer require slim/psr7

Ahora ya tendremos todo el código fuente base de Slim en nuestro proyecto, pero este framework deja completamente en nuestra mano montar toda la estructura de nuestro proyecto. Esto está bien, ya que no nos impone ningún tipo de solución de arquitectura. Continuamos con nuestro «Hola Mundo!»:

Sobre la carpeta miapp, creamos el directorio public

mkdir -p /var/www/html/miapp/public
cd /var/www/html/miapp/public

Ahora creamos el fichero index.php y le pegamos el código base de ejemplo:

<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
require __DIR__ . '/../vendor/autoload.php';

$app = AppFactory::create();

$app->get('/', function (Request $request, Response $response, $args) {
    $response->getBody()->write("Hello world!");
    return $response;
});

$app->run();

Ojo, este código base no es suficiente para nuestro caso porque no estamos trabajando sobre un vhost específico para la app, sino que hemos instalado Slim dentro de un subdirectorio sobre el que queremos jugar: miapp/public.

Por tanto, tenemos que modificar el código de ejemplo y después de la línea de «create», añadimos:

$app->setBasePath('/miapp/public');

Por último, muy necesario, creamos el fichero .htaccess con el siguiente contenido dentro de la carpeta public:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

 

Por cierto, se me olvidaba comentar porque lo más seguro es que ya esté hecho de antes. Pero tenemos que activar el módulo rewrite en nuestro servidor Apache.

sudo a2enmod rewrite

Y además, tenemos que tener en cuenta que hay que permitir sobreescribir los .htaccess, así que importante que en el vhost tengamos la configuración:

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

 

Post data:

Para poder consumir las URLs desde “fuera” de public, puedes colocar el siguiente .htaccess en la raíz del proyecto.

RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]

Ojo, si aplicamos este cambio, podremos consumir el proyecto accediendo a la URL mi-pagina.com/miapp en lugar de mi-pagina.com/miapp/public, así que tendremos que cambiar también el BasePath de la app, recordad modificarlo:

$app->setBasePath('/miapp');

¡Eso es todo! Ahora podréis probar y acceder a vuestro API de la siguiente forma: mi-pagina.com/miapp . Os responderá con el Hello World!

Como os comentaba, una vez instalado Slim, te deja en tu tejado crear todo el resto del proyecto. Existe el concepto Skeleton de Slim donde la comunidad ha creado diferentes esqueletos de código y dependencias para ayudarte en el desarrollo. Echadle un vistazo si no queréis empezar desde una página en blanco.

Dejar un comentario

Tu dirección de correo electrónico no será publicada.

*