Ce fichier PHP définit un gestionnaire UpdatePlayerHandler dans une application Mezzio. Ce gestionnaire est responsable de la mise à jour des informations d'un joueur dans une base de données en utilisant son identifiant (ID). Voici une explication détaillée avec des commentaires pour chaque section importante :

<?php

namespace App\Handler;

use Laminas\Db\Adapter\Adapter;
use Laminas\Db\Sql\Sql;
use Laminas\Diactoros\Response\JsonResponse;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;

class UpdatePlayerHandler implements RequestHandlerInterface
{
    private $adapter;

    public function __construct(Adapter $adapter)
    {
        $this->adapter = $adapter;
         // Constructeur qui initialise l'adaptateur de base de données
    }

    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        try {
            // Récupérez l'ID depuis l'URL
            $id = $request->getAttribute('id');
    
            // Récupérez les données du corps de la requête
            $data = $request->getParsedBody();
    
            // Vérifier la présence des clés nécessaires dans les données
            if (!isset($data['score'], $data['treasures_found'], $data['animals_crushed'])) {
                throw new \Exception("Données manquantes pour la mise à jour.");
            }
    
            // Mettez à jour le joueur dans la base de données
            // Exercice: changer pour une requête préparée !
            $sql = 'UPDATE players SET score=?, treasures_found=?, animals_crushed=? WHERE id=?';
            $result = $this->adapter->query($sql, [
                $data['score'],
                $data['treasures_found'],
                $data['animals_crushed'],
                $id
            ]);
    
             // Retourne une réponse en fonction du succès de la mise à jour
            if ($result) {
                return new JsonResponse(['status' => 'success', 'updated_id' => $id]);
            } else {
                throw new \Exception("Échec de la mise à jour du joueur.");
            }
        } catch (\Exception $e) {
              // Gestion des erreurs avec un message d'erreur dans la réponse JSON
            return new JsonResponse(['status' => 'error', 'message' => $e->getMessage()]);
        }
     }
        
}

Ce gestionnaire effectue les opérations suivantes :

  1. Initialisation : Le constructeur initialise l'adaptateur de base de données (Adapter), qui est utilisé pour interagir avec la base de données.

  2. Traitement de la Requête : La méthode handle est appelée pour chaque requête HTTP correspondant à ce gestionnaire. Elle extrait l'ID du joueur de l'URL et les données de la requête.

  3. Vérification des Données : Le gestionnaire vérifie si les informations nécessaires sont présentes dans les données de la requête.

  4. Mise à Jour dans la Base de Données : Si les données sont valides, le gestionnaire exécute une requête SQL pour mettre à jour les informations du joueur dans la base de données.

  5. Réponse JSON : Le gestionnaire retourne une réponse JSON indiquant le succès ou l'échec de l'opération de mise à jour.

  6. Gestion des Erreurs : En cas d'erreur lors de l'exécution de la requête ou si les données sont invalides, une réponse JSON avec un message d'erreur est retournée.

Ce fichier est un exemple de gestionnaire de requêtes dans Mezzio, utilisant l'adaptateur de base de données Laminas pour effectuer des opérations de mise à jour sur une base de données.

Modifié le: jeudi 18 janvier 2024, 13:33