Crear y ejecutar un proyecto Slim
¿Qué es Slim?
Slim es un microframework ligero de PHP diseñado para construir rápidamente aplicaciones web y APIs simples pero poderosas. Proporciona funciones básicas de enrutamiento, manejo de solicitudes y respuestas, adecuado para proyectos que necesitan un desarrollo y despliegue rápidos.
Características y ventajas principales de Slim
- Ligero: El framework Slim es muy pequeño, ideal para construir aplicaciones pequeñas y medianas.
- Flexibilidad: Puede integrarse con cualquier componente o biblioteca de terceros, ofreciendo gran flexibilidad.
- Fácil de usar: Su API simple y documentación clara permiten a los desarrolladores empezar rápidamente.
- Función de enrutamiento potente: Soporta múltiples métodos HTTP y configuraciones de enrutamiento complejas.
- Soporte de middleware: Permite agregar middleware fácilmente para manejar solicitudes y respuestas.
Slim es ideal para construir APIs RESTful y desarrollar prototipos rápidos.
Usar ServBay para crear y ejecutar un proyecto Slim
En este artículo, usaremos el entorno PHP proporcionado por ServBay para crear y ejecutar un proyecto Slim. Utilizaremos la función "Host" de ServBay para configurar un servidor web y acceder al proyecto mediante una configuración simple.
Nota: Si anteriormente eras usuario de NGINX o Apache
ServBay usa Caddy como servidor web por defecto. Para los usuarios que migran de NGINX y Apache a ServBay, hay algunos puntos clave que deben tener en cuenta:
Configuración de Caddy
ServBay ya tiene Caddy incorporado y la configuración predeterminada está optimizada y depurada. Los desarrolladores solo necesitan administrar el sitio a través de la función "Host" de ServBay sin tener que modificar manualmente el archivo de configuración de Caddy.
Reglas de reescritura y .htaccess
En NGINX y Apache, los desarrolladores normalmente necesitan escribir sus propias reglas de reescritura y archivos .htaccess para manejar la reescritura de URLs y otras configuraciones. Sin embargo, ServBay ya viene con las reglas de Caddy configuradas, por lo que a menos que haya una necesidad especial, los desarrolladores no tendrán que escribir estas reglas ellos mismos.
Más información
Para obtener más información, consulta Rewrite y htaccess, Cómo migrar un sitio Apache a ServBay, Cómo migrar un sitio NGINX a ServBay.
Crear un proyecto Slim
TIP
ServBay recomienda a los desarrolladores colocar los sitios web en el directorio /Applications/ServBay/www
para facilitar la gestión.
Instalar Composer
ServBay viene con Composer preinstalado, no es necesario instalarlo por separado.
Crear un proyecto Slim
Usar Composer para crear un nuevo proyecto Slim:
bashcd /Applications/ServBay/www mkdir servbay-slim-app cd servbay-slim-app composer require slim/slim "^4.0" composer require slim/psr7 -W
1
2
3
4
5Entrar al directorio del proyecto
Entrar al directorio del nuevo proyecto Slim:
bashcd /Applications/ServBay/www/servbay-slim-app
1
Configuración inicial
Crear el archivo de entrada
Crear el archivo
public/index.php
en la raíz del proyecto y agregar el siguiente código:php<?php require __DIR__ . '/../vendor/autoload.php'; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Factory\AppFactory; $app = AppFactory::create(); $app->get('/', function (Request $request, Response $response, $args) { $response->getBody()->write("Hello ServBay!"); return $response; }); $app->run();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Configurar el servidor web
Usar la función "Host" de ServBay para acceder al proyecto Slim a través del servidor web. En la configuración de "Host" de ServBay, agregar un nuevo host:
- Nombre:
My First Slim Dev Site
- Dominio:
servbay-slim-test.local
- Tipo de sitio web:
PHP
- Versión de PHP: Elegir
8.3
- Directorio raíz del sitio web:
/Applications/ServBay/www/servbay-slim-app/public
Para más detalles, consulta Agregar el primer sitio web.
Agregar código de ejemplo
Agregar el siguiente código en el archivo public/index.php
para mostrar "Hello ServBay!":
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write("Hello ServBay!");
return $response;
});
2
3
4
Acceder al sitio web
Abrir el navegador y acceder a https://servbay-slim-test.local
, verás que la página muestra Hello ServBay!
.
Ejemplo de base de datos NoSQL
Ejemplo de Memcached
Instalar la extensión Memcached
En ServBay, la extensión Memcached ya está preinstalada, no es necesario instalarla por separado.
Configurar Memcached
Agregar la dependencia de Memcached en el archivo
composer.json
:json{ "require": { "slim/slim": "^4.0", "memcached/memcached": "^3.1" } }
1
2
3
4
5
6Luego ejecutar
composer update
para instalar las dependencias.Configurar la ruta
Agregar el siguiente código en el archivo
public/index.php
:php$app->get('/memcached', function (Request $request, Response $response, $args) { $memcached = new Memcached(); $memcached->addServer('127.0.0.1', 11211); $cacheKey = 'my_cache_key'; $cachedData = $memcached->get($cacheKey); if ($cachedData === false) { $cachedData = 'Hello Memcached!'; $memcached->set($cacheKey, $cachedData); } $response->getBody()->write($cachedData); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Usar Memcached
Abrir el navegador y acceder a
https://servbay-slim-test.local/memcached
Ejemplo de Redis
Instalar la extensión Redis
En ServBay, la extensión Redis ya está preinstalada, no es necesario instalarla por separado.
Configurar Redis
Agregar la dependencia de Redis en el archivo
composer.json
:json{ "require": { "slim/slim": "^4.0", "predis/predis": "^1.1" } }
1
2
3
4
5
6Luego ejecutar
composer update
para instalar las dependencias.Configurar la ruta
Agregar el siguiente código en el archivo
public/index.php
:php$app->get('/redis', function (Request $request, Response $response, $args) { $redis = new Predis\Client([ 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379, ]); $cacheKey = 'my_cache_key'; $cachedData = $redis->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Redis!'; $redis->set($cacheKey, $cachedData); } $response->getBody()->write($cachedData); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Usar Redis
Abrir el navegador y acceder a
https://servbay-slim-test.local/redis
Ejemplo de base de datos relacional
Crear estructura de la base de datos y archivos de migración
Crear archivos de migración
Usar Phinx para crear archivos de migración:
bashcomposer require robmorgan/phinx vendor/bin/phinx init
1
2Editar archivos de migración
Crear un nuevo archivo de migración en el directorio
db/migrations
y editarlo para definir la estructura de la tabla:phpuse Phinx\Migration\AbstractMigration; class CreateUsersTable extends AbstractMigration { public function change() { $table = $this->table('users'); $table->addColumn('name', 'string') ->addColumn('email', 'string', ['unique' => true]) ->create(); } }
1
2
3
4
5
6
7
8
9
10
11
12Ejecutar la migración
Usar el comando de Phinx para ejecutar la migración y crear la tabla de la base de datos:
bashvendor/bin/phinx migrate
1
Ejemplo de MySQL
Configurar MySQL
Agregar la dependencia de MySQL en el archivo
composer.json
:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Luego ejecutar
composer update
para instalar las dependencias.Configurar la ruta
Agregar el siguiente código en el archivo
public/index.php
:phpuse Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'servbay_slim_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $app->get('/mysql-add', function (Request $request, Response $response, $args) { $user = Capsule::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]' ]); $response->getBody()->write('User added'); return $response; }); $app->get('/mysql', function (Request $request, Response $response, $args) { $users = Capsule::table('users')->get(); $response->getBody()->write($users->toJson()); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32Agregar datos de usuario
Abrir el navegador y acceder a
https://servbay-slim-test.local/mysql-add
yhttps://servbay-slim-test.local/mysql
Ejemplo de PostgreSQL
Configurar PostgreSQL
Agregar la dependencia de PostgreSQL en el archivo
composer.json
:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Luego ejecutar
composer update
para instalar las dependencias.Configurar la ruta
Agregar el siguiente código en el archivo
public/index.php
:phpuse Illuminate\Database\Capsule\Manager as Capsule; $capsule = new Capsule; $capsule->addConnection([ 'driver' => 'pgsql', 'host' => '127.0.0.1', 'database' => 'servbay_slim_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $app->get('/pgsql-add', function (Request $request, Response $response, $args) { $user = Capsule::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]' ]); $response->getBody()->write('User added'); return $response; }); $app->get('/pgsql', function (Request $request, Response $response, $args) { $users = Capsule::table('users')->get(); $response->getBody()->write($users->toJson()); return $response; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32Agregar datos de usuario
Abrir el navegador y acceder a
https://servbay-slim-test.local/pgsql-add
yhttps://servbay-slim-test.local/pgsql
Con estos pasos, ha creado y ejecutado con éxito un proyecto Slim utilizando las funciones proporcionadas por ServBay para gestionar y acceder a su proyecto, mientras se conecta a múltiples bases de datos y consulta datos.