Créer un squelette Laminas messio
Nous allons utiliser le framework Laminas Mezzio, un micro-framework qui convient bien pour créer des API et qui est compatible avec PHP 8. Pour cela, suivez les étapes:
1. Prérequis :
- Serveur web avec PHP 8.
- MySQL.
- Composer.
2. Installation de Mezzio :
Dans votre dossier de projet :
composer create-project mezzio/mezzio-skeleton mezzio-api
3. Ajouter les dépendances nécessaires :
cd mezzio-api
composer require laminas/laminas-db
4. Code de l'API :
Créez un nouveau middleware pour gérer l'ajout des données.
// src/App/Handler/AddDataHandler.php namespace App\Handler;
use Laminas\Db\Adapter\Adapter;
use Laminas\Diactoros\Response\JsonResponse;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
class AddDataHandler implements RequestHandlerInterface {
private $adapter; public function __construct(Adapter $adapter)
{ $this->adapter = $adapter; }
public function handle(ServerRequestInterface $request): ResponseInterface {
$data = $request->getParsedBody();
// Validate data...
$sql = 'INSERT INTO players (email, score, treasures_found, animals_crushed) VALUES (?, ?, ?, ?)';
$result = $this->adapter->query($sql, [ $data['email'], $data['score'], $data['treasures_found'], $data['animals_crushed'] ]);
if ($result) {
return new JsonResponse(['status' => 'success']);
}
else {
return new JsonResponse(['status' => 'error']);
}
}
}
Ensuite, configurez la connexion à la base de données et le routing :
// config/autoload/local.php
return [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'game_data', 'username' => 'your_username', 'password' => 'your_password', 'hostname' => 'localhost', ], ];
Ajoutez le routeur et la configuration du service :
// config/autoload/routes.global.php
use App\Handler\AddDataHandler; $app->post('/add', AddDataHandler::class, 'add.data');
// config/autoload/dependencies.global.php
use Laminas\Db\Adapter\Adapter;
return [ 'dependencies' => [ 'factories' => [ Adapter::class => Laminas\Db\Adapter\AdapterServiceFactory::class, App\Handler\AddDataHandler::class => App\Handler\AddDataHandlerFactory::class, ], ], ];
Créez le AddDataHandlerFactory :
// src/App/Handler/AddDataHandlerFactory.php
namespace App\Handler;
use Laminas\Db\Adapter\Adapter;
use Psr\Container\ContainerInterface;
class AddDataHandlerFactory {
public function __invoke(ContainerInterface $container) { return new AddDataHandler($container->get(Adapter::class));
}
}
5. Utilisation :
Lancez votre serveur et essayez d'ajouter des données à votre base de données via l'endpoint /add avec une requête POST.
Ce guide fournit une base simple pour une API REST avec Laminas Mezzio et PHP 8. Pour une production réelle, vous devriez ajouter la validation des entrées, une gestion d'erreurs plus robuste, l'authentification, et d'autres fonctionnalités essentielles.