Tp 7 php framework mvc blogpoo
Thème :
Junior
1 vues ·10/12 leçons

09 — vlucas/phpdotenv : Gestion des variables d’environnement

Définition

Une variable d’environnement est une valeur de configuration qui change selon l’environnement (développement, production, test). Le fichier .env stocke ces variables, et le package vlucas/phpdotenv permet de les charger automatiquement dans PHP.

🔗 Comparaison Laravel

C’est exactement le même package ! Laravel utilise vlucas/phpdotenv en interne depuis sa version 5.

Notre blog Laravel
vlucas/phpdotenv v5 vlucas/phpdotenv v5 (intégré)
Chargé dans helpers.php Chargé dans bootstrap/app.php
Variables accessibles via $_ENV['KEY'] Variables accessibles via env('KEY') helper

Installation

composer require vlucas/phpdotenv

Cela ajoute dans composer.json :

"require": {
    "vlucas/phpdotenv": "^5.6"
}

Le fichier .env

DB_HOST=localhost
DB_NAME=blog-cfpc-2026
DB_USER=valet
DB_PASS=valet

Règles importantes

  • Ne jamais commiter .env dans Git ! Il contient des mots de passe.
  • Créer un fichier .env.example avec les clés mais sans les valeurs pour guider les autres développeurs.

Notre .gitignore devrait contenir :

.env
vendor/

Chargement dans app/helpers.php

require_once __DIR__ . '/../vendor/autoload.php';

// Chargement des variables d'environnement
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..');
$dotenv->load();

Analyse

Dotenv\Dotenv::createImmutable(__DIR__ . '/..')

  • createImmutable : crée une instance qui ne peut pas être modifiée après chargement (contrairement à createMutable).
  • __DIR__ . '/..' : chemin vers la racine du projet (le dossier parent de app/). C’est là que se trouve le fichier .env.

$dotenv->load() Lit le fichier .env et charge chaque ligne dans $_ENV et $_SERVER.

Utilisation dans database/database.php

// Avant phpdotenv : valeurs en dur ❌
define('DB_SERVERNAME', '127.0.0.1');
define('DB_USERNAME',   'valet');
define('DB_PASSWORD',   'valet');
define('DB_DATABASE',   'blog-cfpc-2026');

// Après phpdotenv : depuis l'environnement ✅
define('DB_SERVERNAME', $_ENV['DB_HOST'] ?? '127.0.0.1');
define('DB_USERNAME',   $_ENV['DB_USER'] ?? 'root');
define('DB_PASSWORD',   $_ENV['DB_PASS'] ?? '');
define('DB_DATABASE',   $_ENV['DB_NAME'] ?? 'blog-cfpc-2026');

L’opérateur ?? 'valeur_par_defaut' est une sécurité : si la variable n’est pas définie dans .env, on utilise une valeur par défaut.

Pourquoi c’est important ?

1. Sécurité

Les identifiants de base de données ne sont plus dans le code source. Si votre dépôt Git est public (ou compromis), les mots de passe ne sont pas exposés.

2. Flexibilité

En développement :

DB_HOST=localhost
DB_USER=valet

En production :

DB_HOST=mysql.monserveur.com
DB_USER=prod_user
DB_PASS=MotDePasseComplexe!123

Même code, configurations différentes.

3. En équipe

Chaque développeur a son propre .env local. Pas de conflits Git sur les configurations personnelles.

🔮 Le helper env() de Laravel

En Laravel, on n’utilise pas $_ENV directement. On utilise le helper env() :

// Laravel
$host = env('DB_HOST', 'localhost');

// Notre blog
$host = $_ENV['DB_HOST'] ?? 'localhost';

Le résultat est identique. env() est juste plus lisible et offre plus de fonctionnalités (cache de configuration, etc.).

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur 09 — `vlucas/phpdotenv` : Gestion des variables d'environnement. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.