Créer et exécuter un projet Slim
Qu'est-ce que Slim ?
Slim est un micro-framework PHP léger, conçu pour créer rapidement des applications web et des API simples mais puissantes. Il fournit les fonctionnalités de base de routage, de traitement des requêtes et des réponses, ce qui le rend idéal pour les projets nécessitant un développement et un déploiement rapides.
Principales caractéristiques et avantages de Slim
- Léger : Le framework Slim est très compact, adapté aux petites et moyennes applications.
- Flexibilité : Peut être intégré à tout composant ou bibliothèque tiers, offrant une grande flexibilité.
- Facile à utiliser : API simple et documentation claire permettant aux développeurs de se familiariser rapidement.
- Puissante fonctionnalité de routage : Prend en charge diverses méthodes HTTP et des configurations de routage complexes.
- Support de middleware : Permet d'ajouter facilement des middleware pour traiter les requêtes et réponses.
Slim est un choix idéal pour créer des API RESTful et des prototypes rapides.
Créer et exécuter un projet Slim avec ServBay
Dans cet article, nous allons utiliser l'environnement PHP fourni par ServBay pour créer et exécuter un projet Slim. Nous allons utiliser la fonctionnalité "hôte" de ServBay pour configurer le serveur web et rendre le projet accessible via une simple configuration.
Attention : si vous avez déjà utilisé NGINX ou Apache
Par défaut, ServBay utilise Caddy comme serveur web. Pour les utilisateurs passant de NGINX ou Apache à ServBay, il y a quelques points clés à noter :
Configuration de Caddy
ServBay intègre déjà Caddy avec une configuration optimisée et testée par défaut. Les développeurs n'ont qu'à gérer les sites via la fonctionnalité "hôte" de ServBay sans modifier manuellement les fichiers de configuration de Caddy.
Règles de réécriture et .htaccess
Dans NGINX et Apache, les développeurs doivent généralement écrire eux-mêmes les règles de réécriture et les fichiers .htaccess pour gérer la réécriture des URL et autres configurations. Cependant, les règles de Caddy sont préconfigurées dans ServBay, ce qui signifie que, sauf cas particulier, les développeurs n'ont pas à écrire ces règles eux-mêmes.
En savoir plus
Pour plus d'informations, veuillez consulter Rewrite et htaccess, Comment migrer un site Apache vers ServBay, Comment migrer un site NGINX vers ServBay.
Créer un projet Slim
TIP
ServBay recommande aux développeurs de placer les sites web dans le répertoire /Applications/ServBay/www
pour en faciliter la gestion.
Installer Composer
ServBay est livré avec Composer préinstallé, vous n'avez donc pas besoin de l'installer séparément.
Créer un projet Slim
Utiliser Composer pour créer un nouveau projet 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
5Entrer dans le répertoire du projet
Accéder au répertoire du projet Slim nouvellement créé :
bashcd /Applications/ServBay/www/servbay-slim-app
1
Configuration initiale
Créer le fichier d'entrée
Créer un fichier
public/index.php
dans le répertoire racine du projet et ajouter le code suivant :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
Configurer le serveur web
Utiliser la fonctionnalité "hôte" de ServBay pour accéder au projet Slim via un serveur web. Dans les paramètres de l'hôte de ServBay, ajouter un nouvel hôte :
- Nom :
My First Slim Dev Site
- Domaine :
servbay-slim-test.local
- Type de site web :
PHP
- Version PHP : choisir
8.3
- Répertoire racine du site web :
/Applications/ServBay/www/servbay-slim-app/public
Pour les étapes de configuration détaillées, veuillez consulter Ajouter votre premier site web.
Ajouter du code d'exemple
Ajouter le code suivant dans le fichier public/index.php
pour afficher "Hello ServBay!" :
$app->get('/', function (Request $request, Response $response, $args) {
$response->getBody()->write("Hello ServBay!");
return $response;
});
2
3
4
Accéder au site web
Ouvrir un navigateur et accéder à https://servbay-slim-test.local
, vous verrez Hello ServBay!
s'afficher sur la page.
Exemple de base de données NoSQL
Exemple Memcached
Installer l'extension Memcached
Dans ServBay, l'extension Memcached est déjà préinstallée, donc aucune installation supplémentaire n'est nécessaire.
Configurer Memcached
Ajouter la dépendance Memcached au fichier
composer.json
:json{ "require": { "slim/slim": "^4.0", "memcached/memcached": "^3.1" } }
1
2
3
4
5
6Puis exécuter
composer update
pour installer les dépendances.Configurer les routes
Ajouter le code suivant dans le fichier
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
15Utiliser Memcached
Ouvrir un navigateur et accéder à
https://servbay-slim-test.local/memcached
Exemple Redis
Installer l'extension Redis
Dans ServBay, l'extension Redis est déjà préinstallée, donc aucune installation supplémentaire n'est nécessaire.
Configurer Redis
Ajouter la dépendance Redis au fichier
composer.json
:json{ "require": { "slim/slim": "^4.0", "predis/predis": "^1.1" } }
1
2
3
4
5
6Puis exécuter
composer update
pour installer les dépendances.Configurer les routes
Ajouter le code suivant dans le fichier
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
18Utiliser Redis
Ouvrir un navigateur et accéder à
https://servbay-slim-test.local/redis
Exemple de base de données relationnelle
Créer une structure de base de données et un fichier de migration
Créer un fichier de migration
Utiliser Phinx pour créer un fichier de migration :
bashcomposer require robmorgan/phinx vendor/bin/phinx init
1
2Éditer le fichier de migration
Créer un nouveau fichier de migration dans le répertoire
db/migrations
et l'éditer pour définir la structure de la table :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
12Exécuter la migration
Utiliser la commande Phinx pour exécuter la migration et créer la table :
bashvendor/bin/phinx migrate
1
Exemple MySQL
Configurer MySQL
Ajouter la dépendance MySQL au fichier
composer.json
:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Puis exécuter
composer update
pour installer les dépendances.Configurer les routes
Ajouter le code suivant dans le fichier
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
32Ajouter des données utilisateur
Ouvrir un navigateur et accéder à
https://servbay-slim-test.local/mysql-add
ethttps://servbay-slim-test.local/mysql
Exemple PostgreSQL
Configurer PostgreSQL
Ajouter la dépendance PostgreSQL au fichier
composer.json
:json{ "require": { "slim/slim": "^4.0", "illuminate/database": "^8.0" } }
1
2
3
4
5
6Puis exécuter
composer update
pour installer les dépendances.Configurer les routes
Ajouter le code suivant dans le fichier
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
32Ajouter des données utilisateur
Ouvrir un navigateur et accéder à
https://servbay-slim-test.local/pgsql-add
ethttps://servbay-slim-test.local/pgsql
En suivant les étapes ci-dessus, vous avez réussi à créer et exécuter un projet Slim, en utilisant les fonctionnalités fournies par ServBay pour gérer et accéder à votre projet, en vous connectant à diverses bases de données et en appelant des données.