Creare ed eseguire un progetto Slim
Cosa è Slim?
Slim è un micro framework leggero per PHP, progettato per costruire rapidamente applicazioni web e API semplici ma potenti. Offre funzionalità essenziali per il routing, la gestione delle richieste e delle risposte, adatto per progetti che necessitano di sviluppo e deploy rapidi.
Caratteristiche e vantaggi principali di Slim
- Leggerezza: Il framework Slim è molto compatto, adatto alla costruzione di applicazioni di piccole e medie dimensioni.
- Flessibilità: Può essere integrato con qualsiasi componente o libreria di terze parti, offrendo grande flessibilità.
- Facilità d'uso: La sua API semplice e la documentazione chiara permettono agli sviluppatori di iniziare a utilizzarlo rapidamente.
- Potenti funzionalità di routing: Supporta vari metodi HTTP e configurazioni di routing complesse.
- Supporto ai middleware: È facile aggiungere middleware per gestire richieste e risposte.
Slim è l'ideale per costruire API RESTful e per lo sviluppo rapido di prototipi.
Creare ed eseguire un progetto Slim con ServBay
In questo articolo, useremo l'ambiente PHP fornito da ServBay per creare ed eseguire un progetto Slim. Utilizzeremo la funzione 'Host' di ServBay per configurare il server web e accedere al progetto tramite una semplice configurazione.
Nota: se hai usato NGINX o Apache in passato
ServBay utilizza Caddy come server web predefinito. Per gli utenti che migrano da NGINX e Apache a ServBay, ci sono alcuni cambiamenti chiave da tenere in considerazione:
Configurazione di Caddy
ServBay ha integrato Caddy e la configurazione di default è già ottimizzata e testata. Gli sviluppatori possono gestire i siti tramite la funzione 'Host' di ServBay senza dover modificare manualmente i file di configurazione di Caddy.
Regole di Rewrite e .htaccess
In NGINX e Apache, gli sviluppatori solitamente scrivono manualmente le regole di Rewrite e i file .htaccess per gestire la riscrittura degli URL e altre configurazioni. Tuttavia, ServBay ha già configurato le regole di Caddy di default, quindi a meno di esigenze particolari, non è necessario scrivere queste regole.
Ulteriori informazioni
Per maggiori dettagli, consulta Rewrite e htaccess, Come migrare un sito Apache su ServBay, Come migrare un sito NGINX su ServBay.
Creare un progetto Slim
TIP
ServBay suggerisce agli sviluppatori di posizionare i siti nella directory /Applications/ServBay/www
per una gestione più semplice.
Installare Composer
ServBay viene già fornito con Composer preinstallato, non è necessario installarlo separatamente.
Creare un progetto Slim
Usa Composer per creare un nuovo progetto 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
5Entrare nella directory del progetto
Entra nella directory del nuovo progetto Slim:
bashcd /Applications/ServBay/www/servbay-slim-app
1
Configurazione iniziale
Creare il file di ingresso
Nella directory radice del progetto, crea il file
public/index.php
e aggiungi il seguente codice: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
Configurare il server web
Usa la funzione 'Host' di ServBay per accedere al progetto Slim tramite il server web. Nelle impostazioni 'Host' di ServBay, aggiungi un nuovo host:
- Nome:
My First Slim Dev Site
- Dominio:
servbay-slim-test.local
- Tipo di sito:
PHP
- Versione PHP: scegli
8.3
- Directory radice del sito:
/Applications/ServBay/www/servbay-slim-app/public
Per i dettagli sui passi della configurazione, consulta Aggiungere il primo sito.
Aggiungere codice di esempio
Nel file public/index.php
, aggiungi il seguente codice per mostrare "Hello ServBay!":
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write("Hello ServBay!");
return $response;
});
2
3
4
Accedere al sito
Apri un browser e visita https://servbay-slim-test.local
, vedrai la pagina mostrare Hello ServBay!
.
Esempio di database NoSQL
Esempio di Memcached
Installare l'estensione Memcached
In ServBay, l'estensione Memcached è già preinstallata, non è necessaria un'installazione aggiuntiva.
Configurare Memcached
Nel file
composer.json
, aggiungi la dipendenza di Memcached:json{ "require": { "slim/slim": "^4.0", "memcached/memcached": "^3.1" } }
1
2
3
4
5
6Poi esegui
composer update
per installare le dipendenze.Configurare il routing
Nel file
public/index.php
aggiungi il seguente codice: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
15Usare Memcached
Apri un browser e visita
https://servbay-slim-test.local/memcached
Esempio di Redis
Installare l'estensione Redis
In ServBay, l'estensione Redis è già preinstallata, non è necessaria un'installazione aggiuntiva.
Configurare Redis
Nel file
composer.json
, aggiungi la dipendenza di Redis:json{ "require": { "slim/slim": "^4.0", "predis/predis": "^1.1" } }
1
2
3
4
5
6Poi esegui
composer update
per installare le dipendenze.Configurare il routing
Nel file
public/index.php
, aggiungi il seguente codice: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
18Usare Redis
Apri un browser e visita
https://servbay-slim-test.local/redis
Esempio di database relazionale
Creare la struttura del database e i file di migrazione
Creare i file di migrazione
Usa Phinx per creare i file di migrazione:
bashcomposer require robmorgan/phinx vendor/bin/phinx init
1
2Modificare i file di migrazione
Nella directory
db/migrations
, crea un nuovo file di migrazione e modificalo per definire la struttura delle tabelle del database: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
12Eseguire la migrazione
Usa il comando di Phinx per eseguire la migrazione e creare le tabelle del database:
bashvendor/bin/phinx migrate
1
Esempio di MySQL
Configurare MySQL
Nel file
composer.json
, aggiungi la dipendenza di MySQL:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Poi esegui
composer update
per installare le dipendenze.Configurare il routing
Nel file
public/index.php
, aggiungi il seguente codice: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
32Scrivere dati utente
Apri un browser e visita
https://servbay-slim-test.local/mysql-add
ehttps://servbay-slim-test.local/mysql
Esempio di PostgreSQL
Configurare PostgreSQL
Nel file
composer.json
, aggiungi la dipendenza di PostgreSQL:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Poi esegui
composer update
per installare le dipendenze.Configurare il routing
Nel file
public/index.php
, aggiungi il seguente codice: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
32Scrivere dati utente
Apri un browser e visita
https://servbay-slim-test.local/pgsql-add
ehttps://servbay-slim-test.local/pgsql
Attraverso questi passaggi, hai creato ed eseguito con successo un progetto Slim e utilizzato le funzionalità fornite da ServBay per gestire e accedere al tuo progetto, collegando anche vari tipi di database e richiamando i dati.