Créa-blog

Ressources pour développeur web

CodeIgniter : Structure des dossiers et des bases de données

Accueil PHP 8 CodeIgniter : Structure des dossiers et des bases de données

Dans ce chapitre, nous allons explorer les bases de CodeIgniter : la structure de ses dossiers et fichiers, la configuration des bases de données et la création de votre première application.

Structure des dossiers et fichiers

La structure de fichiers et de dossiers de CodeIgniter suit un modèle simple et organisé, conçu pour faciliter le développement d’applications web. Voici une explication de chaque élément de la structure de base de CodeIgniter :

  1. app/
    • Ce dossier contient les fichiers spécifiques à votre application.
    • Config/ : Ce dossier contient les fichiers de configuration de votre application, y compris les paramètres de base de données, les routes, et d’autres configurations.
    • Controllers/ : Ce répertoire contient les contrôleurs de votre application. Les contrôleurs gèrent les requêtes HTTP et contrôlent le flux de l’application.
    • Database/ : Contient les fichiers de migration, les seeders et autres éléments liés à la gestion de la base de données.
    • Filters/ : Les filtres (ou hooks) permettent d’ajouter des fonctionnalités supplémentaires à votre application à des points spécifiques du cycle de vie de la requête.
    • Helpers/ : Les aides (ou helpers) sont des fonctions utilitaires pouvant être réutilisées dans toute l’application.
    • Language/ : Contient les fichiers de langue pour internationaliser votre application.
    • Libraries/ : Ce dossier contient les bibliothèques personnalisées que vous avez créées pour votre application.
    • Models/ : Les modèles sont utilisés pour interagir avec la base de données. Ce répertoire contient les fichiers de modèles de votre application.
    • ThirdParty/ : Les bibliothèques tierces (c’est-à-dire non fournies avec CodeIgniter) peuvent être placées ici pour une utilisation dans votre application.
    • Views/ : Les vues sont utilisées pour afficher le contenu de votre application. Ce répertoire contient les fichiers de vue de votre application.
  2. public/
    • Ce dossier est le point d’entrée de votre application.
    • Il contient le fichier index.php qui initialise l’application et gère les requêtes HTTP.
    • Tous les fichiers statiques (CSS, JavaScript, images, etc.) doivent être placés dans ce dossier.
  3. tests/
    • Ce dossier contient les dossiers et fichiers de test pour votre application.
  4. vendor/
    • Ce dossier contient les dépendances de votre projet installées via Composer. Vous ne devez pas modifier ou ajouter des fichiers à ce dossier directement.
  5. writable/
    • Ce dossier doit avoir des permissions en écriture pour que CodeIgniter puisse y écrire des fichiers temporaires, des journaux d’erreurs, des sessions utilisateur, etc.
    • Il est important de sécuriser ce dossier en ne lui accordant que les permissions nécessaires.
  6. autres fichiers à la racine
    • .gitignore : Fichier utilisé par Git pour ignorer certains fichiers ou dossiers lors des opérations de versionnage.
    • builds : Dossier utilisé pour stocker les fichiers de construction lors de la compilation de l’application.
    • composer.json : Le fichier de configuration de Composer pour votre projet CodeIgniter.
    • composer.lock : Fichier de verrouillage de Composer contenant la liste exacte des dépendances installées.
    • .env : Fichier de configuration pour les variables d’environnement. Utilisé pour stocker des informations sensibles comme les informations de base de données.
    • phpunit.xml : Fichier de configuration pour PHPUnit, utilisé pour tester votre application.
    • preload.php : Fichier utilisé pour le préchargement automatique des classes lors du démarrage de l’application, ce qui améliore les performances.
    • spark : Script en ligne de commande pour exécuter diverses tâches de gestion de projet, telles que la génération de code, la migration de base de données, etc…

Cette structure de dossiers et de fichiers est conçue pour fournir une organisation claire et logique pour vos applications CodeIgniter, facilitant ainsi le développement et la maintenance.

Configuration de la base de données

Pour configurer la connexion à votre base de données, vous devez modifier le fichier de configuration database.php situé dans app/config. Vous devez fournir des informations telles que le type de base de données, l’hôte, le nom d’utilisateur, le mot de passe, et le nom de la base de données.

Vous pouvez également configurer des paramètres supplémentaires comme le préfixe de table, les options de connexion, etc… selon les besoins de votre application.

public array $default = [
    'DSN'          => '',
    'hostname'     => 'localhost',              // Adresse du serveur de la base de données
    'username'     => 'votre_nom_utilisateur',  // Nom d'utilisateur de la base de données
    'password'     => 'votre_mot_de_passe',     // Mot de passe de la base de données
    'database'     => 'nom_base_de_donnees',    // Nom de la base de données
    'DBDriver'     => 'MySQLi',                 // Type de pilote de base de données (par exemple, MySQLi, PostgreSQL, etc.)
    'DBPrefix'     => '',                       // Préfixe de la table de la base de données
    'pConnect'     => false,                    // Connexion persistante à la base de données
    'DBDebug'      => true,                     // Activer le mode debug pour les requêtes de base de données
    'charset'      => 'utf8mb4',                // Jeu de caractères par défaut pour la base de données
    'DBCollat'     => 'utf8mb4_general_ci',     // Collation par défaut pour la base de données
    'swapPre'      => '',                       // Préfixe de swap de base de données
    'encrypt'      => false,                    // Activer le chiffrement des connexions de base de données
    'compress'     => false,                    // Activer la compression des connexions de base de données
    'strictOn'     => false,                    // Activer le mode strict de MySQL
    'failover'     => [],                       // Configuration de basculement de base de données
    'port'         => 3306,                     // Port du serveur de la base de données
    'numberNative' => false,                    // Spécifie si les nombres sont traités de manière native
    'dateFormat'   => [                         // Spécifie le format par défaut à utiliser pour formater les dates et les heures lors 
        'date'     => 'Y-m-d',
        'datetime' => 'Y-m-d H:i:s',
        'time'     => 'H:i:s',
    ],
];

Assurez-vous de remplacer les valeurs telles que hostname, username, password et database par les informations de connexion correctes pour votre base de données.

Une fois que vous avez configuré la base de données, CodeIgniter utilisera ces paramètres pour établir une connexion à la base de données et effectuer des opérations de lecture et d’écriture selon les besoins de votre application.

Tester la connexion à la base de données

Pour tester la connexion à la base de données, vous pouvez utiliser la méthode initialize() du modèle de base de données de CodeIgniter pour vérifier si une connexion à la base de données a été établie avec succès. Voici comment faire :

S’agissant uniquement d’un test, nous allons simplement modifier un contrôleur existant. Nous prendrons le contrôleur home.php situé dans le répertoire app/controllers. Ouvrez-le :

<?php

namespace App\Controllers;

class Home extends BaseController
{
    public function index(): string
    {
        return view('welcome_message');
    }
}

Nous allons commencer par charger la bibliothèque de la base de données en appelant la fonction db_connect(). Ensuite, nous initialisons la connexion à la base de données avec initialize() et tentons de nous connecter avec connect().

<?php

namespace App\Controllers;

class Home extends BaseController
{
    public function index(): string
    {
        
       // Charger la bibliothèque de la base de données
       $db = db_connect();

       // Vérifier la connexion à la base de données
        try {
            $db->initialize();
            $connected = $db->connect();
            if ($connected) {
                echo "Connexion à la base de données établie avec succès.";
            } else {
                echo "Échec de la connexion à la base de données.";
            }
        } catch (\Exception $e) {
            echo "Échec de la connexion à la base de données : " . $e->getMessage();
        }
        
        return view('welcome_message');
    }
}

Si la connexion réussit, nous affichons un message indiquant que la connexion à la base de données a été établie avec succès. Sinon, nous affichons un message d’échec. Si une exception est levée lors de la connexion, nous affichons un message d’erreur.

Vu qu’il s’agit d’un simple test, le message sera affiché en haut à gauche de l’écran, en dehors du design de la page. Nous découvrirons futurement comment afficher des messages dans la Vue.