| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <?php
- /**
- * Exemple d'utilisation du MapModel
- *
- * Ce fichier montre comment utiliser le modèle CRUD pour gérer les cartes.
- */
- // Inclure les classes nécessaires
- require_once __DIR__ . '/../Models/Map.php';
- require_once __DIR__ . '/../Models/MapModel.php';
- /**
- * Fonction principale d'exemple
- */
- function runMapModelExample()
- {
- echo "=== Exemple d'utilisation du MapModel ===\n\n";
- // 1. Créer la table si elle n'existe pas
- echo "1. Création de la table maps...\n";
- if (MapModel::createTable()) {
- echo "✓ Table créée avec succès\n\n";
- } else {
- echo "✗ Erreur lors de la création de la table\n\n";
- return;
- }
- // 2. Créer une nouvelle carte
- echo "2. Création d'une nouvelle carte...\n";
- $map = new Map("Carte exemple", 5, 5);
- // Ajouter quelques tuiles
- $map->setTile(0, 0, new Tile(['type' => 'castle', 'resources' => ['gold' => 100]]));
- $map->setTile(2, 2, new Tile(['type' => 'forest', 'resources' => ['wood' => 50]]));
- $map->setTile(4, 4, new Tile(['type' => 'mountain', 'elevation' => 2000]));
- $mapId = MapModel::create($map, "Carte d'exemple avec différents types de tuiles");
- if ($mapId) {
- echo "✓ Carte créée avec succès, ID: $mapId\n\n";
- } else {
- echo "✗ Erreur lors de la création de la carte\n\n";
- return;
- }
- // 3. Charger la carte depuis la base
- echo "3. Chargement de la carte depuis la base...\n";
- $loadedMap = MapModel::findMap($mapId);
- if ($loadedMap) {
- echo "✓ Carte chargée: {$loadedMap->getName()}\n";
- echo "Dimensions: {$loadedMap->getWidth()} x {$loadedMap->getHeight()}\n";
- // Afficher quelques statistiques
- $stats = $loadedMap->getStatistics();
- echo "Cases vides: {$stats['empty_count']} ({$stats['empty_percentage']}%)\n";
- echo "Types présents: " . implode(', ', array_keys($stats['tile_type_counts'])) . "\n\n";
- } else {
- echo "✗ Erreur lors du chargement de la carte\n\n";
- }
- // 4. Mettre à jour la carte
- echo "4. Mise à jour de la carte...\n";
- $loadedMap->setTile(1, 1, new Tile(['type' => 'river', 'resources' => ['water' => 1000]]));
- $loadedMap->setName("Carte exemple modifiée");
- if (MapModel::update($mapId, $loadedMap, "Carte mise à jour avec une rivière")) {
- echo "✓ Carte mise à jour avec succès\n\n";
- } else {
- echo "✗ Erreur lors de la mise à jour\n\n";
- }
- // 5. Lister toutes les cartes avec pagination
- echo "5. Liste des cartes (pagination)...\n";
- $paginated = MapModel::paginate(1, 5);
- echo "Page {$paginated['pagination']['current_page']} sur {$paginated['pagination']['total_pages']}\n";
- echo "Total de cartes: {$paginated['pagination']['total']}\n";
- foreach ($paginated['data'] as $mapData) {
- echo "- ID {$mapData['id']}: {$mapData['name']} ({$mapData['width']}x{$mapData['height']})\n";
- }
- echo "\n";
- // 6. Recherche de cartes
- echo "6. Recherche de cartes contenant 'exemple'...\n";
- $searchResults = MapModel::search('exemple');
- echo "Résultats trouvés: " . count($searchResults) . "\n";
- foreach ($searchResults as $result) {
- echo "- {$result['name']} (ID: {$result['id']})\n";
- }
- echo "\n";
- // 7. Statistiques globales
- echo "7. Statistiques globales...\n";
- $globalStats = MapModel::getGlobalStats();
- echo "Total de cartes: {$globalStats['total_maps']}\n";
- echo "Dimensions moyennes: {$globalStats['average_width']} x {$globalStats['average_height']}\n";
- if ($globalStats['latest_map']) {
- echo "Dernière carte: {$globalStats['latest_map']['name']} (créée le {$globalStats['latest_map']['created_at']})\n";
- }
- echo "\n";
- // 8. Dupliquer une carte
- echo "8. Duplication de la carte...\n";
- $duplicateId = MapModel::duplicate($mapId, "Copie de la carte exemple");
- if ($duplicateId) {
- echo "✓ Carte dupliquée avec succès, nouvel ID: $duplicateId\n\n";
- } else {
- echo "✗ Erreur lors de la duplication\n\n";
- }
- // 9. Export de la carte
- echo "9. Export de la carte au format JSON...\n";
- $exportData = MapModel::export($mapId, 'json');
- if ($exportData) {
- echo "✓ Export réussi (" . strlen($exportData) . " caractères)\n";
- echo "Aperçu: " . substr($exportData, 0, 100) . "...\n\n";
- } else {
- echo "✗ Erreur lors de l'export\n\n";
- }
- // 10. Nettoyage (optionnel - décommenter pour supprimer les cartes de test)
- /*
- echo "10. Suppression des cartes de test...\n";
- if (MapModel::delete($mapId)) {
- echo "✓ Carte originale supprimée\n";
- }
- if (MapModel::delete($duplicateId)) {
- echo "✓ Carte dupliquée supprimée\n";
- }
- echo "\n";
- */
- echo "=== Exemple terminé ===\n";
- }
- // Exécuter l'exemple si le fichier est appelé directement
- if (basename(__FILE__) === basename($_SERVER['PHP_SELF'] ?? '')) {
- runMapModelExample();
- }
|