Construire facilement un fichier de configuration

À partir du moment où un projet a besoin de variables dépendantes de l'environnement où il s'exécute, vous aurez besoin d'un fichier de configuration.

Il existe plusieurs outils qui vont vous permettre d'en mettre en place un (via des fichiers yaml, des variables d'environnement, etc...), mais ce que je vous propose aujourd'hui est de démarrer simplement.

Admettons que dans votre code, vous ayez besoin de vous connecter à une base de données MySQL :

$mysqlConnection = new PDO(
    "mysql:host=localhost;dbname=my_database",
    "user_for_database",
    "password_for_database"
);

Si vous écrivez ce code tel quel dans votre projet, cela voudra dire que votre base de données devra toujours se situer en local sur le serveur où est déployée votre application, et que le nom d'utilisateur et le mot de passe seront toujours les mêmes.

Le mieux est donc de variabiliser ces informations :

$mysqlConnection = new PDO(
    "mysql:host=$host;dbname=$databaseName",
    $username,
    $password,
);

Mais cela ne suffit pas. Il va falloir sortir ces variables dans un fichier de configuration qui pourra être modifié suivant l'environnement déployé. Et savez-vous qu'on peut le faire très facilement grâce aux expressions return et require.

<?php //configuration.php 

return [
    'database_host' => 'localhost',
    'database_name' => 'my_database',
    'database_username' => 'user_for_database',
    'database_password' => 'password_for_database',
];

Et ensuite dans votre script, vous n'avez plus qu'à faire :

<?php // my_script.php

$config = require('configuration.php');

$mysqlConnection = new PDO(
    "mysql:host=$config['database_host'];dbname=$config['database_name']",
    $config['database_username'],
    $config['database_password'],
);

Et voilà, vous avez créé un fichier de configuration que vous pouvez utiliser facilement en faisant un require et que vous allez pouvoir modifier suivant l'environnement. Et bien sûr, vous allez pouvoir mettre plein d'autres choses dans ce fichier comme les informations de votre serveur SMTP pour envoyer des mails, une clé secrète pour chiffrer des données, etc... .

Cet article t'a plu ? Si oui, je te propose de t'inscrire à ma dev letter pour recevoir régulièrement dans ta boîte mail mes conseils, mes nouveaux articles, des vidéos à voir, des outils à découvrir et encore bien d’autres choses.

Je m'inscris