Dans le développement de PHP moderne, PDO (PHP Data Objectts) fournit une interface d'accès à la base de données légère et efficace. La fonction PDOSTATION :: FetchObject peut nous aider à instancier les résultats de la requête de la base de données directement dans les objets. Combiné avec des classes personnalisées, vous pouvez rapidement construire une API RESTful bien structurée. Cet article expliquera en détail comment y parvenir à l'aide de Pdostatement :: fetchObject .
Lors du développement d'une API RESTful, le traitement des résultats de la requête de la base de données nécessite souvent une manière claire et maintenable. PDOSTATION :: FetchObject nous permet de convertir les résultats de la requête directement en cas de classes personnalisées, ce qui simplifie non seulement le code, mais améliore également la lisibilité et la maintenabilité de l'architecture globale.
Ci-dessous, nous utilisons un exemple complet pour créer une API utilisateur (utilisateur) simple.
Supposons que nous ayons une table utilisateur avec la structure suivante:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
Et insérer certaines données de test:
INSERT INTO users (name, email) VALUES
('Alice', '[email protected]'),
('Bob', '[email protected]');
Cette classe sera utilisée pour cartographier les résultats de la requête de la base de données.
class User
{
public int $id;
public string $name;
public string $email;
public function toArray(): array
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
];
}
}
La méthode TOARRAY nous facilite pour convertir des objets en format de tableau afin que nous puissions retourner JSON dans l'API.
<?php
function getPDO(): PDO
{
$dsn = 'mysql:host=localhost;dbname=api_example;charset=utf8mb4';
$username = 'root';
$password = '';
return new PDO($dsn, $username, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
}
?>
<?php
require 'db.php';
require 'User.php';
// Définissez l'en-tête de réponse
header('Content-Type: application/json');
$pdo = getPDO();
// Obtenir des utilisateursID,Le cas échéant
$id = $_GET['id'] ?? null;
if ($id) {
// Obtenez un seul utilisateur
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->execute(['id' => $id]);
$user = $stmt->fetchObject('User');
if ($user) {
echo json_encode($user->toArray());
} else {
http_response_code(404);
echo json_encode(['error' => 'User not found']);
}
} else {
// Obtenez tous les utilisateurs
$stmt = $pdo->query('SELECT * FROM users');
$users = [];
while ($user = $stmt->fetchObject('User')) {
$users[] = $user->toArray();
}
echo json_encode($users);
}
?>
Démarrez votre serveur local, comme l'utilisation d'un serveur PHP intégré:
php -S localhost:8000
Puis visitez l'adresse suivante pour tester:
Obtenez tous les utilisateurs: http: // localhost: 8000 / api.php
Obtenez un seul utilisateur, par exemple Id est 1: http: // localhost: 8000 / api.php? Id = 1
En déploiement réel, vous pouvez remplacer l'adresse du serveur par votre propre nom de domaine, par exemple:
https://api.gitbox.net/api.php?id=1
Avec PDOSTATION :: FetchObject , nous pouvons mapper les enregistrements de base de données dans des objets personnalisés très élégamment, simplifiant ainsi le processus de développement de l'API RESTFul. Avec une conception orientée objet, il rend non seulement le projet plus modulaire, mais facilite également les extensions (comme l'ajout de règles de vérification et de sérialisation).